home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / misc / WHDLoad_dev.lha / WHDLoad / Patcher1.05dev.lha / Patcher1.05 / Patcher16.ASM < prev    next >
Assembly Source File  |  1998-01-14  |  60KB  |  3,352 lines

  1. ;V1.05    DISPLAY-FUNCTION ADDED
  2. ;V1.04    ERRORMESSAGE IF PATCH WAS CLICKED WITH NO PARAMETER SELECTED
  3. ;V1.03    VERSIONSTRING ADDED, CRC16-EVALROUTINE ADDED
  4. ;V1.02    FSSM-DEVICEPOINTER STORED, ADDED DRIVEINHIBIT-OPTION
  5. ;V1.01    COMMANDLINEPARAMETER ADDED
  6. ;V1.00    INITIAL REVISION
  7.  
  8.     INCDIR    ASM-ONE:INCLUDE2.0/
  9.  
  10.     INCLUDE LIBRARIES/DOS_LIB.I
  11.     INCLUDE    LIBRARIES/FILEHANDLER.I
  12.     INCLUDE    LIBRARIES/DOSEXTENS.I
  13.     INCLUDE    LIBRARIES/DISKFONT_LIB.I
  14.     INCLUDE EXEC/EXEC_LIB.I
  15.     INCLUDE    EXEC/MEMORY.I
  16.     INCLUDE    GRAPHICS/GRAPHICS_LIB.I
  17.     INCLUDE INTUITION/INTUITION_LIB.I
  18.     INCLUDE INTUITION/INTUITION.I
  19.     INCLUDE    DEVICES/TRACKDISK.I
  20.     INCLUDE    EXEC/IO.I
  21. ;_SYSBASE    EQU    4
  22.  
  23.     INCDIR    ASM-ONE:OWN/Patcher/
  24. ;VERSION=1
  25. ;SUBVERSION=4
  26.  
  27. debug=0
  28.  
  29. FlaggenTEMP    =    activate!WINDOWDRAG!WINDOWCLOSE    ;!REPORTMOUSE
  30. FLAGGEN    =    FLAGGENTEMP!WBENCHWINDOW!WINDOWDEPTH!GIMMEZEROZERO
  31. ICDMPFLTEMP    =    GADGETUP!ACTIVEWINDOW    ;!MOUSEBUTTONS
  32. ICDMPFL    =    ICDMPFLTEMP!INACTIVEWINDOW!CLOSEWINDOW
  33.  
  34. JAM2    = 1
  35. ;MODE_READWRITE = $3ED
  36.  
  37.  
  38. ;patcher-includefile for V1.05
  39.  
  40. PCH_FILECOUNT        = $80004450
  41. PCH_ADAPTOR        = $80004451
  42. PCH_DISKNAME        = $80004452
  43. PCH_CHECKDISK        = $80004453
  44. PCH_FILENAME        = $80004454
  45. PCH_SPECIAL        = $80004455
  46. PCH_CHANGES        = $80004456
  47. PCH_PROCESSING        = $80004457
  48. PCH_NAME        = $80004458
  49. PCH_MINVERSION        = $80004459
  50. PCH_LOADOFFSET        = $8000445A
  51. PCH_INIT        = $8000445B
  52. PCH_STATE        = $8000445C
  53. PCH_STATE2        = $8000445D
  54. PCH_APPENDSPACE        = $8000445E
  55. PCH_SAVEDATA        = $8000445F
  56. PCH_DATALENGTH        = $80004460
  57. PCH_BOOTBLOCK        = $80004461
  58. PCH_FINISH        = $80004462
  59. PCH_ERRORINPARAMETER    = $80004463
  60. PCH_SAVEPGM        = $80004464
  61.  
  62. PTB_DOSBASE        = $0
  63. PTB_ADDRESSOFFILE    = $4
  64. PTB_INTUITIONBASE    = $8
  65. PTB_GFXBASE        = $C
  66. PTB_WINDOW        = $10
  67. PTB_FILENAME        = $14
  68. PTB_FULLNAME        = $18
  69. PTB_FILESIZE        = $1C
  70. PTB_DISKNAME        = $20
  71. PTB_OPENDEVICE        = $24
  72. PTB_DEVICESOURCEPTR    = $28
  73. PTB_DEVICEDESTPTR    = $2C
  74. PTB_SPACE        = $30
  75. PTB_FORMATDEST        = $34
  76. PTB_REQUEST        = $38
  77. ;--- new since version 1.02 ---
  78. PTB_FSSMSOURCEPTR    = $3C
  79. PTB_FSSMDESTPTR        = $40
  80. PTB_INHIBITDRIVE    = $44
  81. PTB_ENABLEDRIVE        = $48
  82. ;--- new since version 1.03 ---
  83. PTB_CRC16        = $4C
  84. ;--- new since version 1.05 ---
  85. PTB_DISPLAY        = $50
  86.  
  87.     SECTION    Editor,CODE
  88.  
  89.     BRA.S    HP
  90.     DC.B    0,'$VER: Patcher 1.05 (12-jan-98 8:00:00)',0
  91.     EVEN
  92.  
  93. HP
  94.     BASEREG    DOSBAS,A5
  95.     LEA.L    DOSBAS(PC),A5
  96.     MOVE.L    A7,OSSTACK(A5)
  97.  
  98.     ifne    debug
  99.     lea    .line(PC),a0
  100.     bra.s    .contdb
  101. .line    dc.b    '-sdf2: -pasm-one:own/patcher/parameter/imagerrocknroll',0
  102.     EVEN
  103. .contdb
  104.     endc
  105.  
  106.  
  107.     BSR.W    EXAMCL
  108.     MOVE.L    (_SYSBASE).W,A6
  109.     LEA.L    INTUINAME(PC),A1
  110.     MOVE.L    #0,D0
  111.     JSR    _LVOOpenLibrary(A6)    ;Intuition öffnen
  112.     TST.L    D0
  113.     BEQ.W    ERR
  114.     MOVE.L    D0,INTUIBASE(A5)    ;Zeiger sichern
  115.     MOVE.L    (_SYSBASE).W,A6
  116.     LEA.L    DOSNAM(PC),A1
  117.     MOVEQ.L    #0,D0
  118.     JSR    _LVOOpenLibrary(A6)    ;DOS öffnen
  119.     TST.L    D0
  120.     BEQ.W    ERR
  121.     MOVE.L    D0,DOSBAS(A5)        ;Zeiger sichern
  122.     MOVE.L    (_SYSBASE).W,A6
  123.     LEA.L    GRANAME(PC),A1
  124.     MOVEQ.L    #0,D0
  125.     JSR    _LVOOpenLibrary(A6)    ;Graphic-Lib öffnen
  126.     TST.L    D0
  127.     BEQ.W    ERR
  128.     MOVE.L    D0,GRABASE(A5)        ;Zeiger sichern
  129.     MOVE.L    (_SYSBASE).W,A6
  130.     LEA.L    DISKFNTNAME(PC),A1
  131.     MOVEQ.L    #0,D0
  132.     JSR    _LVOOPENLIBRARY(A6)    ;Diskfont-Lib öffnen
  133.     TST.L    D0
  134.     BEQ.W    ERR
  135.     MOVE.L    D0,DISKFNTBASE(A5)    ;Zeiger sichern
  136.  
  137.     MOVE.L    DISKFNTBASE(PC),A6
  138.     LEA.L    RUBY_FNT(PC),A0
  139.     JSR    _LVOOPENDISKFONT(A6)
  140.     TST.L    D0
  141.     BEQ.W    ERR
  142.  
  143.     MOVE.L    #$28,D0
  144.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  145.     MOVE.L    (_SYSBASE).W,A6
  146.     JSR    _LVOALLOCMEM(A6)
  147.     TST.L    D0
  148.     BEQ.W    ERR
  149.     MOVE.L    D0,MYPORT(A5)
  150.  
  151.     MOVE.L    #$38,D0
  152.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  153.     MOVE.L    (_SYSBASE).W,A6
  154.     JSR    _LVOALLOCMEM(A6)
  155.     TST.L    D0
  156.     BEQ.W    ERR
  157.     MOVE.L    D0,BOOTIORQ(A5)
  158.  
  159.     MOVE.L    #$38,D0
  160.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  161.     MOVE.L    (_SYSBASE).W,A6
  162.     JSR    _LVOALLOCMEM(A6)
  163.     TST.L    D0
  164.     BEQ.W    ERR
  165.     MOVE.L    D0,DESTIORQ(A5)
  166.  
  167.     MOVE.L    #$38,D0
  168.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  169.     MOVE.L    (_SYSBASE).W,A6
  170.     JSR    _LVOALLOCMEM(A6)
  171.     TST.L    D0
  172.     BEQ.W    ERR
  173.     MOVE.L    D0,SOURCEIORQ(A5)
  174.  
  175.     MOVE.L    #$48,D0
  176.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  177.     MOVE.L    (_SYSBASE).W,A6
  178.     JSR    _LVOALLOCMEM(A6)
  179.     TST.L    D0
  180.     BEQ.W    ERR
  181.     MOVE.L    D0,DOSPACKETS(A5)
  182.  
  183.     MOVEQ.L    #-1,D0
  184.     MOVE.L    (_SYSBASE).W,A6
  185.     JSR    _LVOALLOCSIGNAL(A6)
  186.     CMP.L    #-1,D0
  187.     BEQ.W    ERR
  188.     MOVE.L    D0,SIGNALSTORE
  189.     
  190.     MOVE.L    MYPORT(PC),A4
  191.     MOVE.B    D0,MP_SIGBIT(A4)    
  192.     SUB.L    A1,A1
  193.     MOVE.L    (_SYSBASE).W,A6
  194.     JSR    _LVOFINDTASK(A6)
  195.     MOVE.L    D0,MP_SIGTASK(A4)
  196.     MOVE.B    #PA_SIGNAL,MP_FLAGS(A4)
  197.     CLR.B    LN_PRI(A4)
  198.     CLR.L    LN_NAME(A4)
  199.     MOVE.B    #NT_MSGPORT,LN_TYPE(A4)
  200.     MOVE.L    A4,A1
  201.     JSR    _LVOADDPORT(A6)
  202.     ST.B    PORTOK(A5)
  203.  
  204.     MOVE.L    MYPORT(PC),A0
  205.     MOVE.L    BOOTIORQ(PC),A1
  206.     MOVE.L    A0,MN_REPLYPORT(A1)
  207.     MOVE.W    #$20,MN_LENGTH(A1)
  208.     MOVE.B    #NT_MESSAGE,LN_TYPE(A1)
  209.     MOVE.L    DESTIORQ(PC),A1
  210.     MOVE.L    A0,MN_REPLYPORT(A1)
  211.     MOVE.W    #$20,MN_LENGTH(A1)
  212.     MOVE.B    #NT_MESSAGE,LN_TYPE(A1)
  213.     MOVE.L    SOURCEIORQ(PC),A1
  214.     MOVE.L    A0,MN_REPLYPORT(A1)
  215.     MOVE.W    #$20,MN_LENGTH(A1)
  216.     MOVE.B    #NT_MESSAGE,LN_TYPE(A1)
  217.     MOVE.L    DOSPACKETS(PC),A1
  218.     MOVE.L    A0,MN_REPLYPORT(A1)
  219.     MOVE.W    #$30,MN_LENGTH(A1)
  220.     MOVE.B    #NT_MESSAGE,LN_TYPE(A1)
  221.  
  222.     TST.B    EXEC1PARAM
  223.     BEQ.W    .ALLP
  224.     LEA.L    MEMORYBASE(PC),A3
  225.     MOVE.L    #PARAMFILENAM,D1    ;LOAD SINGLE PARAMETER (COMMAND-LINE-
  226.     MOVE.L    DOSBAS(PC),A6        ; VERSION)
  227.     JSR    _LVOLOADSEG(A6)
  228.     TST.L    D0
  229.     BEQ.W    .ENDP
  230.     LSL.L    #2,D0
  231.     ADDQ.L    #4,D0
  232.     MOVE.L    D0,(A3)
  233.     MOVE.L    D0,A0
  234.     CLR.L    (A0)
  235.     CMP.L    #'PTCH',8(A0)
  236.     BNE.S    .SP8
  237.     MOVE.L    4(A0),A0
  238. .SP31    CMP.L    #PCH_MINVERSION,(A0)+
  239.     BEQ.S    .SP30
  240.     ADDQ.L    #4,A0
  241.     TST.L    (A0)
  242.     BEQ.W    .ENDP
  243.     BRA.S    .SP31
  244.  
  245. .SP30    TST.L    (A0)
  246.     BEQ.W    .ENDP
  247.     MOVE.L    (A0),A0
  248.     CMP.B    #'V',(A0)+
  249.     BNE.W    ERR
  250.     MOVEQ.L    #0,D1            ;MAINVERSIONCHECK
  251. .SPV1    MOVE.B    (A0)+,D0
  252.     BEQ.W    ERR
  253.     AND.W    #$F,D0
  254.     LSL.W    #4,D1
  255.     OR.W    D0,D1
  256.     CMP.B    #'.',(A0)
  257.     BNE.S    .SPV1
  258.     CMP.W    #1,D1            ;VERSION-#
  259.     BHI.S    .SP8
  260.  
  261.     ADDQ.L    #1,A0            ;SKIP '.'
  262.     MOVEQ.L    #0,D1
  263.     MOVE.B    (A0)+,D0
  264.     BEQ.W    ERR
  265.     AND.W    #$F,D0
  266.     LSL.W    #4,D1
  267.     OR.W    D0,D1
  268.     MOVE.B    (A0)+,D0
  269.     BEQ.W    ERR
  270.     AND.W    #$F,D0
  271.     LSL.W    #4,D1
  272.     OR.W    D0,D1
  273.  
  274.     CMP.W    #5,D1            ;SUBVERSION-#
  275.     BHI.S    .SP8
  276.     BRA.W    .ENDP
  277.  
  278. .SP8    LEA.L    MEMORYBASE(PC),A3
  279. .SP7    MOVE.L    (A3),A2
  280.     TST.L    (A2)
  281.     BEQ.S    .SP6
  282.     MOVE.L    (A3),A3
  283.     BRA.S    .SP7
  284.  
  285. .SP6    CLR.L    (A3)
  286.     MOVE.L    A2,D1
  287.     SUBQ.L    #4,D1
  288.     LSR.L    #2,D1
  289.     MOVE.L    DOSBAS(PC),A6
  290.     JSR    _LVOUNLOADSEG(A6)
  291.     BRA.W    .ENDP
  292.  
  293. .ALLP    LEA.L    LOCKNAM(PC),A1            ;LOAD PARAMETERS
  294.     MOVE.L    A1,D1
  295.     MOVE.L    #MODE_READWRITE,D2
  296.     MOVE.L    DOSBAS(PC),A6
  297.     JSR    _LVOLOCK(A6)
  298.     TST.L    D0
  299.     BEQ.W    ERR
  300.     MOVE.L    D0,PARAMLOCK(A5)
  301.     MOVE.L    PARAMLOCK(PC),D1
  302.     MOVE.L    #PARAMINFO,D2
  303.     MOVE.L    DOSBAS(PC),A6
  304.     JSR    _LVOEXAMINE(A6)
  305.     TST.L    D0
  306.     BEQ.W    ERR
  307.     BRA.S    .1
  308.  
  309. .3    MOVE.L    PARAMLOCK(PC),D1
  310.     MOVE.L    #PARAMINFO,D2
  311.     MOVE.L    DOSBAS(PC),A6
  312.     JSR    _LVOEXNEXT(A6)
  313.     TST.L    D0
  314.     BEQ.W    .2
  315. .1    LEA.L    PARAMINFO,A0
  316.     CMP.L    #-3,FIB_DIRENTRYTYPE(A0)
  317.     BNE.S    .3
  318.     LEA.L    MEMORYBASE(PC),A3
  319. .5    TST.L    (A3)
  320.     BEQ.S    .4
  321.     MOVE.L    (A3),A3
  322.     BRA.S    .5
  323.  
  324. .4
  325.     LEA.L    PARAMINFO,A0
  326.     LEA.L    FIB_FILENAME(A0),A1
  327.     LEA.L    BUFFILNAM(PC),A0
  328.     MOVEQ.L    #$68-1,D0
  329. .26    MOVE.B    (A1)+,(A0)+
  330.     DBF    D0,.26
  331.  
  332.     MOVE.L    #FILENAM,D1
  333.     MOVE.L    DOSBAS(PC),A6
  334.     JSR    _LVOLOADSEG(A6)
  335.     TST.L    D0
  336.     BEQ.S    .3
  337.     LSL.L    #2,D0
  338.     ADDQ.L    #4,D0
  339.     MOVE.L    D0,(A3)
  340.     MOVE.L    D0,A0
  341.     CLR.L    (A0)
  342.     CMP.L    #'PTCH',8(A0)
  343.     BNE.S    .8
  344.     MOVE.L    4(A0),A0
  345. .31    CMP.L    #PCH_MINVERSION,(A0)+
  346.     BEQ.S    .30
  347.     ADDQ.L    #4,A0
  348.     TST.L    (A0)
  349.     BEQ.W    .3
  350.     BRA.S    .31
  351.  
  352. .30    TST.L    (A0)
  353.     BEQ.W    .3
  354.     MOVE.L    (A0),A0
  355.     CMP.B    #'V',(A0)+
  356.     BNE.W    ERR
  357.     MOVEQ.L    #0,D1            ;MAINVERSIONCHECK
  358. .APV1    MOVE.B    (A0)+,D0
  359.     BEQ.W    ERR
  360.     AND.W    #$F,D0
  361.     LSL.W    #4,D1
  362.     OR.W    D0,D1
  363.     CMP.B    #'.',(A0)
  364.     BNE.S    .APV1
  365.     CMP.W    #1,D1            ;VERSION-#
  366.     BHI.S    .8
  367.  
  368.     ADDQ.L    #1,A0            ;SKIP '.'
  369.     MOVEQ.L    #0,D1
  370.     MOVE.B    (A0)+,D0
  371.     BEQ.W    ERR
  372.     AND.W    #$F,D0
  373.     LSL.W    #4,D1
  374.     OR.W    D0,D1
  375.     MOVE.B    (A0)+,D0
  376.     BEQ.W    ERR
  377.     AND.W    #$F,D0
  378.     LSL.W    #4,D1
  379.     OR.W    D0,D1
  380.  
  381.     CMP.W    #5,D1            ;SUBVERSION-#
  382.     BHI.S    .8
  383.     BRA.W    .3
  384.  
  385. .8    LEA.L    MEMORYBASE(PC),A3
  386. .7    MOVE.L    (A3),A2
  387.     TST.L    (A2)
  388.     BEQ.S    .6
  389.     MOVE.L    (A3),A3
  390.     BRA.S    .7
  391.  
  392. .6    CLR.L    (A3)
  393.     MOVE.L    A2,D1
  394.     SUBQ.L    #4,D1
  395.     LSR.L    #2,D1
  396.     MOVE.L    DOSBAS(PC),A6
  397.     JSR    _LVOUNLOADSEG(A6)
  398.     BRA.W    .3
  399.  
  400. .2    MOVE.L    PARAMLOCK(PC),D1
  401.     MOVE.L    DOSBAS(PC),A6
  402.     JSR    _LVOUNLOCK(A6)
  403.     CLR.L    PARAMLOCK        ;END OF LOADING PARAMETERS
  404.  
  405.  
  406.  
  407. .ENDP    LEA.L    MEMORYBASE(PC),A3
  408.     TST.L    (A3)
  409.     BEQ.W    ERR
  410.     MOVEQ.L    #0,D0
  411. .10    MOVE.L    (A3),A3
  412.     ADDQ.W    #1,D0
  413.     TST.L    (A3)
  414.     BNE.S    .10
  415.     MOVE.W    D0,PARAMCOUNT
  416.  
  417.     TST.W    PARAMCOUNT
  418.     BEQ.W    ERR
  419.     MOVE.L    #$FFFF,D0
  420.     MOVEQ.L    #0,D1
  421.     MOVE.W    PARAMCOUNT,D1
  422.     CMP.W    #5,D1
  423.     BLS.S    .PI1
  424.     MULU.W    #5,D0
  425.     DIVU.W    D1,D0
  426.     BRA.S    .11
  427.  
  428. .PI1    MOVE.L    #$FFFF,D0
  429.  
  430. .11    LEA.L    PROPINFO1(PC),A0
  431.     MOVE.W    D0,PI_VERTBODY(A0)
  432.     MOVE.W    D0,LENGTHBODY
  433.  
  434.     MOVE.W    PARAMCOUNT(PC),D1
  435.     SUBQ.W    #1,D1
  436. .27    LEA.L    MEMORYBASE(PC),A4
  437.     MOVE.W    PARAMCOUNT(PC),D0
  438.     SUBQ.W    #1,D0
  439. .15    DBF    D0,.13
  440.     DBF    D1,.27
  441.     BRA.S    .14
  442.  
  443. .13
  444. .16    MOVE.L    (A4),A3
  445.     TST.L    (A3)
  446.     BEQ.S    .15
  447.     MOVE.L    $4(A3),A1
  448. .18    CMP.L    #PCH_NAME,(A1)+
  449.     BEQ.S    .17
  450.     ADDQ.L    #4,A1
  451.     TST.L    (A1)
  452.     BEQ.W    ERR
  453.     BRA.S    .18
  454.  
  455. .17    MOVE.L    (A1),A1
  456.     MOVE.L    (A3),A2
  457.     MOVE.L    4(A2),A0
  458. .19    CMP.L    #PCH_NAME,(A0)+
  459.     BEQ.S    .20
  460.     ADDQ.L    #4,A0
  461.     TST.L    (A0)
  462.     BEQ.W    ERR
  463.     BRA.S    .19
  464.  
  465. .20    MOVE.L    (A0),A0    
  466. .23    CMPM.B    (A1)+,(A0)+
  467.     BHI.S    .21
  468.     BLO.S    .22
  469.     TST.B    (A1)
  470.     BEQ.S    .21
  471.     TST.B    (A0)
  472.     BEQ.S    .22
  473.     BRA.S    .23
  474.  
  475. .22    MOVE.L    (A2),A1
  476.     MOVE.L    A2,(A4)
  477.     MOVE.L    A3,(A2)
  478.     MOVE.L    A1,(A3)
  479. .21    MOVE.L    (A4),A4
  480.     BRA.S    .15
  481.  
  482. .14    MOVE.W    PARAMCOUNT(PC),D0
  483.     CMP.W    #$5,D0
  484.     BLS.S    .24
  485.     MOVEQ.L    #6,D0
  486. .24    MOVEQ.L    #6,D1
  487.     SUB.W    D0,D1
  488.     MULU.W    #$18,D1
  489.     JMP    .25(PC,D1.W)
  490.  
  491. .25    BCLR    #0,AUFLAGS
  492.     BCLR    #0,ADFLAGS
  493.     BCLR    #0,P1FLAGS
  494.     MOVEQ.L    #5,D0
  495.     BSR.W    GETPARPTR
  496.     MOVE.L    D0,T5PTR
  497.     BCLR    #0,G5FLAGS
  498.     NOP
  499.     NOP
  500.     MOVEQ.L    #4,D0
  501.     BSR.W    GETPARPTR
  502.     MOVE.L    D0,T4PTR
  503.     BCLR    #0,G4FLAGS
  504.     NOP
  505.     NOP
  506.     MOVEQ.L    #3,D0
  507.     BSR.W    GETPARPTR
  508.     MOVE.L    D0,T3PTR
  509.     BCLR    #0,G3FLAGS
  510.     NOP
  511.     NOP
  512.     MOVEQ.L    #2,D0
  513.     BSR.W    GETPARPTR
  514.     MOVE.L    D0,T2PTR
  515.     BCLR    #0,G2FLAGS
  516.     NOP
  517.     NOP
  518.     MOVEQ.L    #1,D0
  519.     BSR.W    GETPARPTR
  520.     MOVE.L    D0,T1PTR
  521.  
  522.     MOVE.L    INTUIBASE(PC),A6
  523.     LEA.L    WINDOW1DATEN,a0
  524.     JSR    _LVOOpenWindow(a6)    ;Window öffnen
  525.     TST.L    D0
  526.     BEQ.W    ERR
  527.     MOVE.L    D0,WINDOW1        ;Zeiger sichern
  528.  
  529.     MOVE.L    WINDOW1(PC),A0
  530.     MOVE.L    $32(A0),A4
  531.     MOVE.L    A4,WIN1RASTPORT
  532.  
  533.     LEA.L    RUBY_FNT(PC),A0
  534.     MOVE.L    GRABASE(PC),A6
  535.     JSR    _LVOOPENFONT(A6)
  536.     TST.L    D0
  537.     BEQ.W    ERR
  538.     
  539.     MOVE.L    D0,A0
  540.     CMP.W    #$8,$14(A0)
  541.     BNE.W    ERR
  542.  
  543.     MOVE.L    A4,A1
  544.     MOVE.L    GRABASE(PC),A6
  545.     JSR    _LVOSETFONT(A6)
  546.  
  547.     MOVE.L    WIN1RASTPORT(PC),A1
  548.     MOVEQ.L    #3,D0
  549.     MOVE.L    GRABASE(PC),A6
  550.     JSR    _LVOSETAPEN(A6)
  551.  
  552.     MOVE.L    WIN1RASTPORT(PC),A1
  553.     MOVE.L    #25+405,D0
  554.     MOVE.L    #18,D1
  555.     MOVE.L    GRABASE(PC),A6
  556.     JSR    _LVOMOVE(A6)
  557.     MOVE.L    WIN1RASTPORT(PC),A1
  558.     MOVEQ.L    #5,D0
  559.     LEA.L    POINTARRAY1(PC),A0
  560.     MOVE.L    GRABASE(PC),A6
  561.     JSR    _LVOPOLYDRAW(A6)
  562.  
  563.     MOVE.L    WIN1RASTPORT(PC),A1
  564.     MOVE.L    #449,D0
  565.     MOVE.L    #81,D1
  566.     MOVE.L    GRABASE(PC),A6
  567.     JSR    _LVOMOVE(A6)
  568.     MOVE.L    WIN1RASTPORT(PC),A1
  569.     MOVEQ.L    #5,D0
  570.     LEA.L    POINTARRAY2(PC),A0
  571.     MOVE.L    GRABASE(PC),A6
  572.     JSR    _LVOPOLYDRAW(A6)
  573.  
  574.     MOVE.L    WIN1RASTPORT(PC),A1
  575.     MOVE.L    #449,D0
  576.     MOVE.L    #123,D1
  577.     MOVE.L    GRABASE(PC),A6
  578.     JSR    _LVOMOVE(A6)
  579.     MOVE.L    WIN1RASTPORT(PC),A1
  580.     MOVEQ.L    #5,D0
  581.     LEA.L    POINTARRAY3(PC),A0
  582.     MOVE.L    GRABASE(PC),A6
  583.     JSR    _LVOPOLYDRAW(A6)
  584.  
  585.     MOVE.L    WIN1RASTPORT(PC),A1
  586.     MOVEQ.L    #1,D0
  587.     MOVE.L    GRABASE(PC),A6
  588.     JSR    _LVOSETAPEN(A6)
  589.  
  590.     MOVE.L    WIN1RASTPORT(PC),A1
  591.     MOVE.L    #28,D0
  592.     MOVE.L    #79,D1
  593.     MOVE.L    GRABASE(PC),A6
  594.     JSR    _LVOMOVE(A6)
  595.     MOVE.L    #NOSELECTEND-NOSELECT,D0
  596.     MOVE.L    WIN1RASTPORT(PC),A1
  597.     LEA.L    NOSELECT(PC),A0
  598.     MOVE.L    GRABASE(PC),A6
  599.     JSR    _LVOTEXT(A6)
  600.  
  601.     MOVE.L    WIN1RASTPORT(PC),A1
  602.     MOVE.L    #28,D0
  603.     MOVE.L    #89,D1
  604.     MOVE.L    GRABASE(PC),A6
  605.     JSR    _LVOMOVE(A6)
  606.     MOVEQ.L    #0,D0
  607.  
  608.     MOVE.L    #SRCDEVICE-SRCINFO-1,D0
  609.     LEA.L    SRCDEVICE(PC),A1
  610. .T1    ADDQ.L    #1,D0
  611.     TST.B    (A1)+
  612.     BNE.S    .T1
  613.  
  614.     MOVE.L    WIN1RASTPORT(PC),A1
  615.     LEA.L    SRCINFO(PC),A0
  616.     MOVE.L    GRABASE(PC),A6
  617.     JSR    _LVOTEXT(A6)
  618.  
  619.     MOVE.L    WIN1RASTPORT(PC),A1
  620.     MOVE.L    #28,D0
  621.     MOVE.L    #99,D1
  622.     MOVE.L    GRABASE(PC),A6
  623.     JSR    _LVOMOVE(A6)
  624.     MOVE.L    #DESTDEVICE-DESTINFO-1,D0
  625.     LEA.L    DESTDEVICE(PC),A1
  626. .T2    ADDQ.L    #1,D0
  627.     TST.B    (A1)+
  628.     BNE.S    .T2
  629.     MOVE.L    WIN1RASTPORT(PC),A1
  630.     LEA.L    DESTINFO(PC),A0
  631.     MOVE.L    GRABASE(PC),A6
  632.     JSR    _LVOTEXT(A6)
  633.  
  634.     MOVE.L    WIN1RASTPORT(PC),A1
  635.     MOVE.L    #28,D0
  636.     MOVE.L    #121,D1
  637.     MOVE.L    GRABASE(PC),A6
  638.     JSR    _LVOMOVE(A6)
  639.     MOVE.L    #WELCOMEEND-WELCOME,D0
  640.     MOVE.L    WIN1RASTPORT(PC),A1
  641.     LEA.L    WELCOME(PC),A0
  642.     MOVE.L    GRABASE(PC),A6
  643.     JSR    _LVOTEXT(A6)
  644.  
  645.     MOVE.L    WIN1RASTPORT(PC),A1
  646.     MOVE.L    #28,D0
  647.     MOVE.L    #131,D1
  648.     MOVE.L    GRABASE(PC),A6
  649.     JSR    _LVOMOVE(A6)
  650.     MOVE.L    #WRITTENEND-WRITTEN,D0
  651.     MOVE.L    WIN1RASTPORT(PC),A1
  652.     LEA.L    WRITTEN(PC),A0
  653.     MOVE.L    GRABASE(PC),A6
  654.     JSR    _LVOTEXT(A6)
  655.  
  656. ;    TST.B    EXEC1PARAM
  657. ;    BEQ.S    Y
  658. ;                    ;1PARAMETER-STUFF HERE
  659.  
  660.  
  661.     BRA.S    Y
  662.  
  663. SCHLAEFT    BSR.W    SCHLAFEN
  664. .1    BTST.L    #$12,d4            ;WINDOW gerade aktiviert?
  665.     BEQ.S    SCHLAEFT
  666.  
  667. Y    BSR.W    SCHLAFEN
  668.     BTST.L    #$13,d4            ;WINDOW gerade inaktiviert?
  669.     BNE.S    SCHLAEFT
  670.  
  671.     BTST.L    #9,D4            ;QUIT GEDRÜCKT?
  672.     BEQ.S    .10
  673.     BRA.S    ENDE
  674.  
  675. .10    BTST.L    #6,D4            ;GADGET LOSGELASSEN?
  676.     BEQ.S    Y
  677.     BSR.W    CHECKGADGETS
  678.     BRA.S    Y
  679.  
  680. .8
  681.  
  682. ;    BTST.L    #3,D4            ;Maustaste angeklickt?
  683. ;    beq.w    Y
  684. ;next1
  685. ;    btst    #7,$bfe001
  686. ;    beq    ende
  687. ;    BRA.S    Y
  688.         
  689. ENDE    MOVEQ.L    #0,D0
  690.     BEQ.S    ENDE1
  691.  
  692. ERR    MOVE.L    OSSTACK(PC),A7
  693.     MOVEQ.L    #20,D0
  694.  
  695. ENDE1    MOVE.L    D0,-(A7)
  696.     MOVE.L    INTUIBASE(PC),A6  
  697.     TST.L    WINDOW1
  698.     BEQ.S    .1
  699.     MOVE.L    WINDOW1(PC),A0
  700.     JSR    _LVOCloseWindow(A6)    ;Window schließen
  701.  
  702. .1    TST.L    FILHANDLE
  703.     BEQ.S    .12
  704.     MOVE.L    FILHANDLE(PC),D1
  705.     MOVE.L    DOSBAS(PC),A6
  706.     JSR    _LVOCLOSE(A6)
  707.  
  708. .12    LEA.L    MEMORYBASE(PC),A3
  709.     TST.L    (A3)
  710.     BEQ.S    .9
  711. .10    MOVE.L    (A3),A2
  712.     TST.L    (A2)
  713.     BEQ.S    .11
  714.     MOVE.L    (A3),A3
  715.     BRA.S    .10
  716.  
  717. .11    CLR.L    (A3)
  718.     MOVE.L    A2,D1
  719.     SUBQ.L    #4,D1
  720.     LSR.L    #2,D1
  721.     MOVE.L    DOSBAS(PC),A6
  722.     JSR    _LVOUNLOADSEG(A6)
  723.     BRA.S    .12
  724.  
  725. .9    TST.L    PARAMLOCK(A5)
  726.     BEQ.S    .2
  727.     MOVE.L    PARAMLOCK(PC),D1
  728.     MOVE.L    DOSBAS(PC),A6
  729.     JSR    _LVOUNLOCK(A6)
  730. .2
  731.     TST.B    PORTOK(A5)
  732.     BEQ.S    .S2
  733.     MOVE.L    MYPORT(PC),A1
  734.     MOVE.L    (_SYSBASE).W,A6
  735.     JSR    _LVOREMPORT(A6)
  736. .S2
  737.     MOVE.L    SIGNALSTORE(PC),D0
  738.     CMP.L    #-1,D0
  739.     BEQ.S    .S1
  740.     MOVE.L    (_SYSBASE).W,A6
  741.     JSR    _LVOFREESIGNAL(A6)
  742.  
  743. .S1    TST.L    BOOTIORQ(A5)
  744.     BEQ.S    .M1
  745.     MOVE.L    BOOTIORQ(PC),A1
  746.     MOVE.L    #$38,D0
  747.     MOVE.L    (_SYSBASE).W,A6
  748.     JSR    _LVOFREEMEM(A6)
  749. .M1
  750.     TST.L    DOSPACKETS(A5)
  751.     BEQ.S    .M5
  752.     MOVE.L    DOSPACKETS(PC),A1
  753.     MOVE.L    #$48,D0
  754.     MOVE.L    (_SYSBASE).W,A6
  755.     JSR    _LVOFREEMEM(A6)
  756. .M5
  757.     TST.L    DESTIORQ(A5)
  758.     BEQ.S    .M2
  759.     MOVE.L    DESTIORQ(PC),A1
  760.     MOVE.L    #$38,D0
  761.     MOVE.L    (_SYSBASE).W,A6
  762.     JSR    _LVOFREEMEM(A6)
  763. .M2
  764.     TST.L    SOURCEIORQ(A5)
  765.     BEQ.S    .M3
  766.     MOVE.L    SOURCEIORQ(PC),A1
  767.     MOVE.L    #$38,D0
  768.     MOVE.L    (_SYSBASE).W,A6
  769.     JSR    _LVOFREEMEM(A6)
  770. .M3
  771.     TST.L    MYPORT(A5)
  772.     BEQ.S    .M4
  773.     MOVE.L    MYPORT(PC),A1
  774.     MOVE.L    #$28,D0
  775.     MOVE.L    (_SYSBASE).W,A6
  776.     JSR    _LVOFREEMEM(A6)
  777. .M4
  778.  
  779.     TST.L    GRABASE
  780.     BEQ.S    .3
  781.     MOVE.L    (_SYSBASE).W,A6
  782.     MOVE.L    GRABASE(PC),A1
  783.     JSR    _LVOcloselibrary(a6)    ;Graphic-Lib schliessen
  784.  
  785. .3    TST.L    DOSBAS
  786.     BEQ.S    .6
  787.     MOVE.L    (_SYSBASE).W,A6
  788.     MOVE.L    DOSBAS(PC),A1
  789.     JSR    _LVOcloselibrary(a6)    ;DOS-Lib schliessen
  790.  
  791. .6    tst.l    INTUIBASE
  792.     beq.s    .4
  793.     move.l    (_SYSBASE).W,A6
  794.     move.l    INTUIBASE(PC),A1
  795.     jsr    _LVOCloseLibrary(A6)    ;Intuition-Lib schließen
  796.  
  797. .4    tst.l    DISKFNTBASE
  798.     beq.s    .5
  799.     move.l    (_SYSBASE).W,A6
  800.     move.l    DISKFNTBASE(PC),A1
  801.     jsr    _LVOCloseLibrary(A6)    ;DISKFONT-Lib schließen
  802.  
  803. .5    move.l    (sp)+,d0
  804.     rts
  805.  
  806. *******************************************************************************
  807.  
  808. CHECKGADGETS
  809.     LEA.L    MSGBUFFER+2(PC),A0
  810.     BTST.B    #6,IM_CLASS+3-$14(A0)
  811.     BNE.S    .2
  812.     MOVEQ.L    #-1,D0
  813.     RTS
  814.  
  815. .2    MOVE.L    IM_IADDRESS-$14(A0),D0
  816.     CMP.L    #PROPGADGET1,D0
  817.     BEQ.W    DRAWPARS
  818.     CMP.L    #ARROWUP,D0
  819.     BEQ.W    DRAWONEUP
  820.     CMP.L    #ARROWDOWN,D0
  821.     BEQ.W    DRAWONEDOWN
  822.     CMP.L    #GADGET1,D0
  823.     BEQ.S    .G1
  824.     CMP.L    #GADGET2,D0
  825.     BEQ.S    .G2
  826.     CMP.L    #GADGET3,D0
  827.     BEQ.S    .G3
  828.     CMP.L    #GADGET4,D0
  829.     BEQ.S    .G4
  830.     CMP.L    #GADGET5,D0
  831.     BEQ.S    .G5
  832.     CMP.L    #PTCHGADGET,D0
  833.     BEQ.W    REMPROT
  834.     MOVEQ.L    #-1,D0
  835.     RTS
  836.  
  837. .G5    MOVEQ.L    #5,D0
  838.     BRA.S    .GT0
  839.  
  840. .G4    MOVEQ.L    #4,D0
  841.     BRA.S    .GT0
  842.  
  843. .G3    MOVEQ.L    #3,D0
  844.     BRA.S    .GT0
  845.  
  846. .G2    MOVEQ.L    #2,D0
  847.     BRA.S    .GT0
  848.  
  849. .G1    MOVEQ.L    #1,D0
  850. .GT0
  851.     MOVEQ.L    #0,D2
  852.     MOVE.W    POSOFPROP(PC),D2
  853.     ADD.W    D0,D2
  854.     LEA.L    MEMORYBASE(PC),A3
  855.     BRA.S    .GT6
  856.  
  857. .GT4    MOVE.L    (A3),A3
  858. .GT6    DBF    D2,.GT4
  859.     MOVE.L    $4(A3),A3
  860.     MOVE.L    A3,PARAMTABBASE
  861.     MOVE.L    WIN1RASTPORT(PC),A1
  862.     MOVEQ.L    #0,D0
  863.     MOVE.L    GRABASE(PC),A6
  864.     JSR    _LVOSETAPEN(A6)
  865.     MOVE.L    WIN1RASTPORT(PC),A0
  866.     BCLR.B    #3,RP_FLAGS+1(A0)
  867.     MOVE.L    WIN1RASTPORT(PC),A1
  868.     MOVE.L    #26,D0
  869.     MOVE.L    #72,D1
  870.     MOVE.L    #448,D2
  871.     MOVE.L    #102,D3
  872.     MOVE.L    GRABASE(PC),A6
  873.     JSR    _LVORECTFILL(A6)
  874.     MOVE.L    WIN1RASTPORT(PC),A1
  875.     MOVE.L    #26,D0
  876.     MOVE.L    #114,D1
  877.     MOVE.L    #448,D2
  878.     MOVE.L    #134,D3
  879.     MOVE.L    GRABASE(PC),A6
  880.     JSR    _LVORECTFILL(A6)
  881.     MOVE.L    WIN1RASTPORT(PC),A1
  882.     MOVEQ.L    #1,D0
  883.     MOVE.L    GRABASE(PC),A6
  884.     JSR    _LVOSETAPEN(A6)
  885.     MOVE.L    WIN1RASTPORT(PC),A1
  886.     MOVE.L    #28,D0
  887.     MOVE.L    #79,D1
  888.     MOVE.L    GRABASE(PC),A6
  889.     JSR    _LVOMOVE(A6)
  890.  
  891.     MOVE.L    PARAMTABBASE(PC),A0
  892. .GT8    CMP.L    #PCH_NAME,(A0)+
  893.     BEQ.S    .GT7    
  894.     ADDQ.L    #4,A0
  895.     BRA.S    .GT8
  896.  
  897. .GT7    MOVE.L    (A0),A0
  898.     MOVE.L    A0,A1
  899. .GT9    TST.B    (A1)+
  900.     BNE.S    .GT9
  901.     MOVE.L    A1,D0
  902.     SUB.L    A0,D0
  903.     SUBQ.L    #1,D0
  904.     MOVE.L    WIN1RASTPORT(PC),A1
  905.     MOVE.L    GRABASE(PC),A6
  906.     JSR    _LVOTEXT(A6)
  907.     MOVE.L    WIN1RASTPORT(PC),A1
  908.     MOVE.L    #28,D0
  909.     MOVE.L    #89,D1
  910.     MOVE.L    GRABASE(PC),A6
  911.     JSR    _LVOMOVE(A6)
  912.  
  913.     MOVE.L    PARAMTABBASE(PC),A0
  914. .GT10    CMP.L    #PCH_ADAPTOR,(A0)+
  915.     BEQ.S    .GT11
  916.     ADDQ.L    #4,A0
  917.     TST.L    (A0)
  918.     BEQ.S    .GT17
  919.     BRA.S    .GT10
  920.  
  921. .GT11    MOVE.L    (A0),A0
  922.     MOVE.L    A0,A1
  923.     BRA.S    .GT15
  924.  
  925. .GT12    ADDQ.L    #1,A1
  926. .GT15    MOVE.B    (A1),D0
  927.     BEQ.S    .GT13
  928.     CMP.B    #$A,D0
  929.     BNE.S    .GT12
  930.     MOVE.L    A1,D0
  931.     SUB.L    A0,D0
  932.     MOVE.L    A1,A4
  933.     MOVE.L    WIN1RASTPORT(PC),A1
  934.     MOVE.L    GRABASE(PC),A6
  935.     JSR    _LVOTEXT(A6)
  936.     MOVE.L    WIN1RASTPORT(PC),A1
  937.     MOVE.L    #28,D0
  938.     MOVE.L    #99,D1
  939.     MOVE.L    GRABASE(PC),A6
  940.     JSR    _LVOMOVE(A6)
  941.  
  942.     ADDQ.L    #1,A4
  943.     MOVE.L    A4,A0
  944.     MOVE.L    A0,A1
  945.     BRA.S    .GT16
  946.  
  947. .GT14    ADDQ.L    #1,A1
  948. .GT16    MOVE.B    (A1),D0
  949.     BEQ.S    .GT13
  950.     CMP.B    #$A,D0
  951.     BNE.S    .GT14
  952. .GT13    MOVE.L    A1,D0
  953.     SUB.L    A0,D0
  954.     MOVE.L    WIN1RASTPORT(PC),A1
  955.     MOVE.L    GRABASE(PC),A6
  956.     JSR    _LVOTEXT(A6)
  957. .GT17    MOVE.L    WIN1RASTPORT(PC),A1
  958.     MOVE.L    #28,D0
  959.     MOVE.L    #121,D1
  960.     MOVE.L    GRABASE(PC),A6
  961.     JSR    _LVOMOVE(A6)
  962.     MOVE.L    #READYEND-READY,D0
  963.     MOVE.L    WIN1RASTPORT(PC),A1
  964.     LEA.L    READY(PC),A0
  965.     MOVE.L    GRABASE(PC),A6
  966.     JSR    _LVOTEXT(A6)
  967.     RTS
  968.  
  969. DRAWONEUP
  970.     MOVEQ.L    #0,D0
  971.     MOVEQ.L    #0,D1
  972.     MOVEQ.L    #0,D2
  973.     MOVE.W    POSOFPROP(PC),D2
  974.     MOVE.W    PARAMCOUNT(PC),D1
  975.     SUBQ.W    #5,D1
  976.     TST.W    D2
  977.     BEQ.W    .1
  978.     SUBQ.W    #1,D2
  979.     MOVE.W    D2,POSOFPROP
  980.     LEA.L    PROPINFO1(PC),A0
  981. ;    MOVE.W    PI_VPOTRES(A0),D0
  982.     MOVE.L    #$FFFF,D0
  983.     MULU.W    D2,D0
  984.     DIVU.W    D1,D0
  985.     MOVE.W    D0,PI_VERTPOT(A0)
  986.  
  987.     ADDQ.L    #1,D2
  988.     MOVE.L    D2,D0
  989.     BSR.W    GETPARPTR
  990.     MOVE.L    D0,T1PTR
  991.     ADDQ.L    #1,D2
  992.     MOVE.L    D2,D0
  993.     BSR.W    GETPARPTR
  994.     MOVE.L    D0,T2PTR
  995.     ADDQ.L    #1,D2
  996.     MOVE.L    D2,D0
  997.     BSR.W    GETPARPTR
  998.     MOVE.L    D0,T3PTR
  999.     ADDQ.L    #1,D2
  1000.     MOVE.L    D2,D0
  1001.     BSR.W    GETPARPTR
  1002.     MOVE.L    D0,T4PTR
  1003.     ADDQ.L    #1,D2
  1004.     MOVE.L    D2,D0
  1005.     BSR.W    GETPARPTR
  1006.     MOVE.L    D0,T5PTR
  1007.  
  1008.     MOVE.L    WIN1RASTPORT(PC),A1
  1009.     MOVEQ.L    #0,D0
  1010.     MOVE.L    GRABASE(PC),A6
  1011.     JSR    _LVOSETAPEN(A6)
  1012.     MOVE.L    WIN1RASTPORT(PC),A0
  1013.     BCLR.B    #3,RP_FLAGS+1(A0)
  1014.     MOVE.L    WIN1RASTPORT(PC),A1
  1015.     MOVE.L    #26,D0
  1016.     MOVE.L    #9,D1
  1017.     MOVE.L    #429,D2
  1018.     MOVE.L    #60,D3
  1019.     MOVE.L    GRABASE(PC),A6
  1020.     JSR    _LVORECTFILL(A6)
  1021.  
  1022.     LEA.L    PROPGADGET1(PC),A0
  1023.     MOVE.L    WINDOW1(PC),A1
  1024.     LEA.L    0.W,A2
  1025.     MOVE.L    #6,D0
  1026.     MOVE.L    INTUIBASE(PC),A6
  1027.     JSR    _LVOREFRESHGLIST(A6)
  1028.  
  1029. .1    RTS
  1030.  
  1031. DRAWONEDOWN
  1032.     MOVEQ.L    #0,D0
  1033.     MOVEQ.L    #0,D1
  1034.     MOVEQ.L    #0,D2
  1035.     MOVE.W    POSOFPROP(PC),D2
  1036.     MOVE.W    PARAMCOUNT(PC),D1
  1037.     SUBQ.W    #5,D1
  1038.     CMP.W    D1,D2
  1039.     BHS.W    .1
  1040.     ADDQ.W    #1,D2
  1041.     MOVE.W    D2,POSOFPROP
  1042.     LEA.L    PROPINFO1(PC),A0
  1043. ;    MOVE.W    PI_VPOTRES(A0),D0
  1044.     MOVE.L    #$FFFF,D0
  1045.     MULU.W    D2,D0
  1046.     DIVU.W    D1,D0
  1047.     MOVE.W    D0,PI_VERTPOT(A0)
  1048.  
  1049.     ADDQ.L    #1,D2
  1050.     MOVE.L    D2,D0
  1051.     BSR.W    GETPARPTR
  1052.     MOVE.L    D0,T1PTR
  1053.     ADDQ.L    #1,D2
  1054.     MOVE.L    D2,D0
  1055.     BSR.W    GETPARPTR
  1056.     MOVE.L    D0,T2PTR
  1057.     ADDQ.L    #1,D2
  1058.     MOVE.L    D2,D0
  1059.     BSR.W    GETPARPTR
  1060.     MOVE.L    D0,T3PTR
  1061.     ADDQ.L    #1,D2
  1062.     MOVE.L    D2,D0
  1063.     BSR.W    GETPARPTR
  1064.     MOVE.L    D0,T4PTR
  1065.     ADDQ.L    #1,D2
  1066.     MOVE.L    D2,D0
  1067.     BSR.W    GETPARPTR
  1068.     MOVE.L    D0,T5PTR
  1069.  
  1070.     MOVE.L    WIN1RASTPORT(PC),A1
  1071.     MOVEQ.L    #0,D0
  1072.     MOVE.L    GRABASE(PC),A6
  1073.     JSR    _LVOSETAPEN(A6)
  1074.     MOVE.L    WIN1RASTPORT(PC),A0
  1075.     BCLR.B    #3,RP_FLAGS+1(A0)
  1076.     MOVE.L    WIN1RASTPORT(PC),A1
  1077.     MOVE.L    #26,D0
  1078.     MOVE.L    #9,D1
  1079.     MOVE.L    #429,D2
  1080.     MOVE.L    #60,D3
  1081.     MOVE.L    GRABASE(PC),A6
  1082.     JSR    _LVORECTFILL(A6)
  1083.  
  1084.     LEA.L    PROPGADGET1(PC),A0
  1085.     MOVE.L    WINDOW1(PC),A1
  1086.     LEA.L    0.W,A2
  1087.     MOVE.L    #6,D0
  1088.     MOVE.L    INTUIBASE(PC),A6
  1089.     JSR    _LVOREFRESHGLIST(A6)
  1090.  
  1091. .1    RTS
  1092.  
  1093. DRAWPARS
  1094.     MOVEQ.L    #$0,D1
  1095.     MOVEQ.L    #0,D2
  1096.     LEA.L    PROPINFO1(PC),A0
  1097. ;    MOVE.W    PI_VPOTRES(A0),D1
  1098.     MOVE.W    PARAMCOUNT(PC),D2
  1099.     SUBQ.W    #5,D2
  1100.     MOVE.L    #$FFFF,D1
  1101.     DIVU.W    D2,D1
  1102.  
  1103.     LEA.L    PROPINFO1(PC),A0
  1104.     MOVE.W    PI_VERTPOT(A0),D2
  1105.     DIVU.W    D1,D2
  1106.     AND.L    #$FFFF,D2
  1107. .GT18    MOVE.L    D2,D1
  1108.     ADDQ.W    #5,D1
  1109.     CMP.W    PARAMCOUNT(PC),D1
  1110.     BLS.S    .GT3
  1111.     TST.W    D2
  1112.     BEQ.S    .GT3
  1113.     SUBQ.W    #1,D2
  1114.     BRA.S    .GT18
  1115.  
  1116. .GT3
  1117.     MOVE.W    D2,POSOFPROP
  1118.     ADDQ.L    #1,D2
  1119.     MOVE.L    D2,D0
  1120.     BSR.W    GETPARPTR
  1121.     MOVE.L    D0,T1PTR
  1122.     ADDQ.L    #1,D2
  1123.     MOVE.L    D2,D0
  1124.     BSR.W    GETPARPTR
  1125.     MOVE.L    D0,T2PTR
  1126.     ADDQ.L    #1,D2
  1127.     MOVE.L    D2,D0
  1128.     BSR.W    GETPARPTR
  1129.     MOVE.L    D0,T3PTR
  1130.     ADDQ.L    #1,D2
  1131.     MOVE.L    D2,D0
  1132.     BSR.W    GETPARPTR
  1133.     MOVE.L    D0,T4PTR
  1134.     ADDQ.L    #1,D2
  1135.     MOVE.L    D2,D0
  1136.     BSR.W    GETPARPTR
  1137.     MOVE.L    D0,T5PTR
  1138.  
  1139.     MOVE.L    WIN1RASTPORT(PC),A1
  1140.     MOVEQ.L    #0,D0
  1141.     MOVE.L    GRABASE(PC),A6
  1142.     JSR    _LVOSETAPEN(A6)
  1143.     MOVE.L    WIN1RASTPORT(PC),A0
  1144.     BCLR.B    #3,RP_FLAGS+1(A0)
  1145.     MOVE.L    WIN1RASTPORT(PC),A1
  1146.     MOVE.L    #26,D0
  1147.     MOVE.L    #9,D1
  1148.     MOVE.L    #429,D2
  1149.     MOVE.L    #60,D3
  1150.     MOVE.L    GRABASE(PC),A6
  1151.     JSR    _LVORECTFILL(A6)
  1152.  
  1153.     LEA.L    GADGET1(PC),A0
  1154.     MOVE.L    WINDOW1(PC),A1
  1155.     LEA.L    0.W,A2
  1156.     MOVE.L    #5,D0
  1157.     MOVE.L    INTUIBASE(PC),A6
  1158.     JSR    _LVOREFRESHGLIST(A6)
  1159.     RTS
  1160.  
  1161. REMPROT    TST.L    PARAMTABBASE(A5)
  1162.     BNE.S    .16
  1163.  
  1164.     MOVE.L    WIN1RASTPORT(PC),A1
  1165.     MOVEQ.L    #0,D0
  1166.     MOVE.L    GRABASE(PC),A6
  1167.     JSR    _LVOSETAPEN(A6)
  1168.     MOVE.L    WIN1RASTPORT(PC),A0
  1169.     BCLR.B    #3,RP_FLAGS+1(A0)
  1170.     MOVE.L    WIN1RASTPORT(PC),A1
  1171.     MOVE.L    #26,D0
  1172.     MOVE.L    #72,D1
  1173.     MOVE.L    #448,D2
  1174.     MOVE.L    #82,D3
  1175.     MOVE.L    GRABASE(PC),A6
  1176.     JSR    _LVORECTFILL(A6)
  1177.  
  1178.     MOVE.L    WIN1RASTPORT(PC),A1
  1179.     MOVEQ.L    #1,D0
  1180.     MOVE.L    GRABASE(PC),A6
  1181.     JSR    _LVOSETAPEN(A6)
  1182.     MOVE.L    WIN1RASTPORT(PC),A1
  1183.     MOVE.L    #28,D0
  1184.     MOVE.L    #79,D1
  1185.     MOVE.L    GRABASE(PC),A6
  1186.     JSR    _LVOMOVE(A6)
  1187.     MOVE.L    #NOSELECT2END-NOSELECT2,D0
  1188.     MOVE.L    WIN1RASTPORT(PC),A1
  1189.     LEA.L    NOSELECT2(PC),A0
  1190.     MOVE.L    GRABASE(PC),A6
  1191.     JSR    _LVOTEXT(A6)
  1192.     RTS
  1193.  
  1194. .16    LEA.L    SPECIALSPACE,A0
  1195.     MOVE.L    #$C000/4-1,D0
  1196. .I1    CLR.L    (A0)+
  1197.     DBF    D0,.I1
  1198.  
  1199.     MOVE.L    PARAMTABBASE(PC),A0
  1200. .1    CMP.L    #PCH_INIT,(A0)+
  1201.     BEQ.S    .2
  1202.     ADDQ.L    #4,A0
  1203.     TST.L    (A0)
  1204.     BEQ.S    .3
  1205.     BRA.S    .1
  1206.  
  1207. .2    MOVE.L    (A0),A0
  1208.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1209.     JSR    (A0)
  1210.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1211.     TST.L    D0
  1212.     BNE.W    .ERRINPARM
  1213.  
  1214. .3    MOVE.L    PARAMTABBASE(PC),A0
  1215. .4    CMP.L    #PCH_FILECOUNT,(A0)+
  1216.     BEQ.S    .5
  1217.     ADDQ.L    #4,A0
  1218.     TST.L    (A0)
  1219.     BEQ.W    .ERRINSTRUCT
  1220.     BRA.S    .4
  1221.  
  1222. .5    MOVEQ.L    #-1,D6
  1223.     MOVE.L    (A0),D7
  1224. .6    ADDQ.L    #1,D6
  1225.     CMP.L    D6,D7
  1226.     BHI.W    .18
  1227.     MOVE.L    WIN1RASTPORT(PC),A1
  1228.     MOVEQ.L    #0,D0
  1229.     MOVE.L    GRABASE(PC),A6
  1230.     JSR    _LVOSETAPEN(A6)
  1231.     MOVE.L    WIN1RASTPORT(PC),A1
  1232.     MOVE.L    #26,D0
  1233.     MOVE.L    #114,D1
  1234.     MOVE.L    #448,D2
  1235.     MOVE.L    #134,D3
  1236.     MOVE.L    GRABASE(PC),A6
  1237.     JSR    _LVORECTFILL(A6)
  1238.     MOVE.L    WIN1RASTPORT(PC),A1
  1239.     MOVEQ.L    #1,D0
  1240.     MOVE.L    GRABASE(PC),A6
  1241.     JSR    _LVOSETAPEN(A6)
  1242.     MOVE.L    WIN1RASTPORT(PC),A1
  1243.     MOVE.L    #28,D0
  1244.     MOVE.L    #121,D1
  1245.     MOVE.L    GRABASE(PC),A6
  1246.     JSR    _LVOMOVE(A6)
  1247.     MOVE.L    #OPERFINIEND-OPERFINI,D0
  1248.     MOVE.L    WIN1RASTPORT(PC),A1
  1249.     LEA.L    OPERFINI(PC),A0
  1250.     MOVE.L    GRABASE(PC),A6
  1251.     JSR    _LVOTEXT(A6)
  1252.  
  1253.     MOVE.L    PARAMTABBASE(PC),A0
  1254. .F1    CMP.L    #PCH_FINISH,(A0)+
  1255.     BEQ.S    .F2
  1256.     ADDQ.L    #4,A0
  1257.     TST.L    (A0)
  1258.     BEQ.S    .F3
  1259.     BRA.S    .F1
  1260.  
  1261. .F2    TST.L    (A0)
  1262.     BEQ.S    .F3
  1263.     MOVE.L    (A0),A0
  1264.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1265.     JSR    (A0)
  1266.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1267.  
  1268. .F3    BRA.W    .E3
  1269.  
  1270. ;----------------------------------------------------------------------
  1271.  
  1272. .ERRINLENGTH
  1273.  
  1274.     MOVE.L    #ERRORGAMEEND-ERRORGAME,D7
  1275.     MOVE.L    #ERRORGAME,D6
  1276.     MOVE.L    #ERRORLENGTHEND-ERRORLENGTH,D5
  1277.     MOVE.L    #ERRORLENGTH,D4
  1278.     BRA.S    .ERR
  1279.  
  1280. .ERRINSTRUCT
  1281.     MOVEQ.L    #0,D6
  1282.     MOVE.L    #ERRORINSTRUCTEND-ERRORINSTRUCT,D5
  1283.     MOVE.L    #ERRORINSTRUCT,D4
  1284.     BRA.S    .ERR
  1285.  
  1286. .ERRINPARM
  1287.     MOVEQ.L    #0,D6
  1288.     MOVE.L    #ERRORINPARMEND-ERRORINPARM,D5
  1289.     MOVE.L    #ERRORINPARM,D4
  1290.  
  1291. .ERR    MOVE.L    WIN1RASTPORT(PC),A1
  1292.     MOVEQ.L    #0,D0
  1293.     MOVE.L    GRABASE(PC),A6
  1294.     JSR    _LVOSETAPEN(A6)
  1295.     MOVE.L    WIN1RASTPORT(PC),A1
  1296.     MOVE.L    #26,D0
  1297.     MOVE.L    #114,D1
  1298.     MOVE.L    #448,D2
  1299.     MOVE.L    #134,D3
  1300.     MOVE.L    GRABASE(PC),A6
  1301.     JSR    _LVORECTFILL(A6)
  1302.     MOVE.L    WIN1RASTPORT(PC),A1
  1303.     MOVEQ.L    #1,D0
  1304.     MOVE.L    GRABASE(PC),A6
  1305.     JSR    _LVOSETAPEN(A6)
  1306.     MOVE.L    WIN1RASTPORT(PC),A1
  1307.     MOVE.L    #28,D0
  1308.     MOVE.L    #121,D1
  1309.     MOVE.L    GRABASE(PC),A6
  1310.     JSR    _LVOMOVE(A6)
  1311.     MOVE.L    D5,D0
  1312.     MOVE.L    WIN1RASTPORT(PC),A1
  1313.     MOVE.L    D4,A0
  1314.     MOVE.L    GRABASE(PC),A6
  1315.     JSR    _LVOTEXT(A6)
  1316.  
  1317.     TST.L    D6
  1318.     BEQ.S    .E9
  1319.  
  1320.     MOVE.L    WIN1RASTPORT(PC),A1
  1321.     MOVE.L    #28,D0
  1322.     MOVE.L    #131,D1
  1323.     MOVE.L    GRABASE(PC),A6
  1324.     JSR    _LVOMOVE(A6)
  1325.     MOVE.L    D7,D0
  1326.     MOVE.L    WIN1RASTPORT(PC),A1
  1327.     MOVE.L    D6,A0
  1328.     MOVE.L    GRABASE(PC),A6
  1329.     JSR    _LVOTEXT(A6)
  1330.  
  1331. .E9    MOVE.L    PARAMTABBASE(PC),A0
  1332. .E1    CMP.L    #PCH_ERRORINPARAMETER,(A0)+
  1333.     BEQ.S    .E2
  1334.     ADDQ.L    #4,A0
  1335.     TST.L    (A0)
  1336.     BEQ.S    .E3
  1337.     BRA.S    .E1
  1338.  
  1339. .E2    TST.L    (A0)
  1340.     BEQ.S    .E3
  1341.     MOVE.L    (A0),A0
  1342.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1343.     JSR    (A0)
  1344.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1345.  
  1346. .E3    TST.L    FILEMEMADR(A5)
  1347.     BEQ.S    .ER
  1348.     MOVE.L    FILEMEMADR(PC),A1
  1349.     MOVE.L    FILSIZE(PC),D0
  1350.     ADDQ.L    #7,D0
  1351.     AND.L    #$FFFFFFF8,D0
  1352.     MOVE.L    (_SYSBASE).W,A6
  1353.     JSR    _LVOFREEMEM(A6)
  1354.     CLR.L    FILEMEMADR(A5)
  1355.     CLR.L    FILSIZE(A5)
  1356. .ER
  1357.     TST.L    DEVICESOURCEPTR(A5)
  1358.     BEQ.S    .E4
  1359.     MOVE.L    DEVICESOURCEPTR(PC),A1
  1360.     MOVE.L    4.W,A6
  1361.     JSR    _LVOCLOSEDEVICE(A6)
  1362.     CLR.L    DEVICESOURCEPTR(A5)
  1363.  
  1364. .E4    TST.L    DEVICEDESTPTR(A5)
  1365.     BEQ.S    .E5
  1366.     MOVE.L    DEVICEDESTPTR(PC),A1
  1367.     MOVE.L    4.W,A6
  1368.     JSR    _LVOCLOSEDEVICE(A6)
  1369.     CLR.L    DEVICEDESTPTR(A5)
  1370.     
  1371. .E5    RTS
  1372.  
  1373. ;-------------------------------------------------------------------------
  1374.  
  1375. .18    CLR.L    FILEMEMADR(A5)
  1376.     MOVE.L    WIN1RASTPORT(PC),A1
  1377.     MOVEQ.L    #0,D0
  1378.     MOVE.L    GRABASE(PC),A6
  1379.     JSR    _LVOSETAPEN(A6)
  1380.     MOVE.L    WIN1RASTPORT(PC),A1
  1381.     MOVE.L    #26,D0
  1382.     MOVE.L    #114,D1
  1383.     MOVE.L    #448,D2
  1384.     MOVE.L    #134,D3
  1385.     MOVE.L    GRABASE(PC),A6
  1386.     JSR    _LVORECTFILL(A6)
  1387.  
  1388.     MOVE.L    WIN1RASTPORT(PC),A1
  1389.     MOVE.L    #28,D0
  1390.     MOVE.L    #121,D1
  1391.     MOVE.L    GRABASE(PC),A6
  1392.     JSR    _LVOMOVE(A6)
  1393.     MOVE.L    WIN1RASTPORT(PC),A1
  1394.     MOVEQ.L    #1,D0
  1395.     MOVE.L    GRABASE(PC),A6
  1396.     JSR    _LVOSETAPEN(A6)
  1397.     MOVE.L    PARAMTABBASE(PC),A0
  1398. .7    CMP.L    #PCH_STATE,(A0)+
  1399.     BEQ.S    .8
  1400.     ADDQ.L    #4,A0
  1401.     TST.L    (A0)
  1402.     BEQ.S    .9
  1403.     BRA.S    .7
  1404.  
  1405. .8    MOVE.L    (A0),A0
  1406.     MOVE.L    D6,D0
  1407.     LSL.L    #2,D0
  1408.     TST.L    (A0,D0.L)
  1409.     BEQ.S    .9
  1410.     MOVE.L    (A0,D0.L),A0
  1411.     MOVE.L    A0,A1
  1412.     BRA.S    .10
  1413.  
  1414. .11    ADDQ.L    #1,A1
  1415. .10    MOVE.B    (A1),D0
  1416.     BEQ.S    .12
  1417.     CMP.B    #$A,D0
  1418.     BNE.S    .11
  1419.     MOVE.L    A1,D0
  1420.     SUB.L    A0,D0
  1421.     MOVE.L    A1,A4
  1422.     MOVE.L    WIN1RASTPORT(PC),A1
  1423.     MOVE.L    GRABASE(PC),A6
  1424.     JSR    _LVOTEXT(A6)
  1425.     MOVE.L    WIN1RASTPORT(PC),A1
  1426.     MOVE.L    #28,D0
  1427.     MOVE.L    #131,D1
  1428.     MOVE.L    GRABASE(PC),A6
  1429.     JSR    _LVOMOVE(A6)
  1430.     ADDQ.L    #1,A4
  1431.     MOVE.L    A4,A0
  1432.     MOVE.L    A0,A1
  1433.     BRA.S    .14
  1434.  
  1435. .13    ADDQ.L    #1,A1
  1436. .14    MOVE.B    (A1),D0
  1437.     BEQ.S    .12
  1438.     CMP.B    #$A,D0
  1439.     BNE.S    .13
  1440. .12    MOVE.L    A1,D0
  1441.     SUB.L    A0,D0
  1442.     MOVE.L    WIN1RASTPORT(PC),A1
  1443.     MOVE.L    GRABASE(PC),A6
  1444.     JSR    _LVOTEXT(A6)
  1445.     BRA.S    .15
  1446.  
  1447. .9    MOVE.L    #INSCOPYEND-INSCOPY,D0
  1448.     MOVE.L    WIN1RASTPORT(PC),A1
  1449.     LEA.L    INSCOPY(PC),A0
  1450.     MOVE.L    GRABASE(PC),A6
  1451.     JSR    _LVOTEXT(A6)
  1452.     MOVE.L    WIN1RASTPORT(PC),A1
  1453.     MOVE.L    #28,D0
  1454.     MOVE.L    #131,D1
  1455.     MOVE.L    GRABASE(PC),A6
  1456.     JSR    _LVOMOVE(A6)
  1457.     MOVE.L    #WAITPROCEND-WAITPROC,D0
  1458.     MOVE.L    WIN1RASTPORT(PC),A1
  1459.     LEA.L    WAITPROC(PC),A0
  1460.     MOVE.L    GRABASE(PC),A6
  1461.     JSR    _LVOTEXT(A6)
  1462. .15    
  1463.     MOVE.L    PARAMTABBASE(PC),A0
  1464. .21    CMP.L    #PCH_DISKNAME,(A0)+
  1465.     BEQ.S    .17
  1466.     ADDQ.L    #4,A0
  1467.     TST.L    (A0)
  1468.     BEQ.S    .19
  1469.     BRA.S    .21
  1470.  
  1471. .17    MOVE.L    (A0),A0
  1472.     MOVE.L    D6,D0
  1473.     LSL.L    #2,D0
  1474.     TST.L    (A0,D0.L)
  1475.     BEQ.W    .19
  1476.     MOVE.L    (A0,D0.L),A0
  1477.     LEA.L    LOCKDISK(PC),A2
  1478.     LEA.L    FILNAME(PC),A1
  1479. .20    MOVE.B    (A0),(A2)+
  1480.     MOVE.B    (A0)+,(A1)+
  1481.     BNE.S    .20
  1482.     MOVE.B    #':',-1(A1)
  1483.     MOVE.B    #':',-1(A2)
  1484.     CLR.B    (A1)
  1485.     CLR.B    (A2)
  1486.     MOVE.L    A1,STRFILNAME(A5)
  1487.     LEA.L    LOCKDISK(PC),A1
  1488.     MOVE.L    A1,D1
  1489.     MOVE.L    #MODE_READWRITE,D2
  1490.     MOVE.L    DOSBAS(PC),A6
  1491.     JSR    _LVOLOCK(A6)
  1492.     TST.L    D0
  1493.     BEQ.W    .ERRINPARM
  1494.  
  1495.     MOVE.L    D0,D1
  1496.     MOVE.L    DOSBAS(PC),A6
  1497.     JSR    _LVOUNLOCK(A6)
  1498.     CLR.L    PARAMLOCK
  1499. .19
  1500. ;MANUELLER DISKCHECK
  1501.     MOVE.L    PARAMTABBASE(PC),A0
  1502. .35    CMP.L    #PCH_CHECKDISK,(A0)+
  1503.     BEQ.S    .36
  1504.     ADDQ.L    #4,A0
  1505.     TST.L    (A0)
  1506.     BEQ.W    .37
  1507.     BRA.S    .35
  1508.  
  1509. .36    MOVE.L    (A0),A0
  1510.     MOVE.L    D6,D0
  1511.     LSL.L    #2,D0
  1512.     TST.L    (A0,D0.L)
  1513.     BEQ.S    .37
  1514.     MOVE.L    (A0,D0.L),A0
  1515.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1516.     JSR    (A0)
  1517.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1518.     TST.L    D0
  1519.     BNE.W    .ERRINPARM
  1520. .37
  1521.     CLR.B    FILENAMEGIVEN(A5)
  1522.     MOVE.L    PARAMTABBASE(PC),A0
  1523. .22    CMP.L    #PCH_FILENAME,(A0)+
  1524.     BEQ.S    .23
  1525.     ADDQ.L    #4,A0
  1526.     TST.L    (A0)
  1527.     BEQ.W    .24
  1528.     BRA.S    .22
  1529.  
  1530. .23    MOVE.L    (A0),A0
  1531.     MOVE.L    D6,D0
  1532.     LSL.L    #2,D0
  1533.     TST.L    (A0,D0.L)
  1534.     BEQ.W    .24
  1535.     MOVE.L    (A0,D0.L),A0
  1536.     MOVE.L    STRFILNAME(PC),A1
  1537. .25    MOVE.B    (A0)+,(A1)+
  1538.     BNE.S    .25
  1539.     ST.B    FILENAMEGIVEN(A5)
  1540. .24
  1541.     MOVE.L    PARAMTABBASE(PC),A0
  1542. .38    CMP.L    #PCH_SPECIAL,(A0)+
  1543.     BEQ.S    .39
  1544.     ADDQ.L    #4,A0
  1545.     TST.L    (A0)
  1546.     BEQ.W    .40
  1547.     BRA.S    .38
  1548.  
  1549. .39    MOVE.L    (A0),A0
  1550.     MOVE.L    D6,D0
  1551.     LSL.L    #2,D0
  1552.     TST.L    (A0,D0.L)
  1553.     BEQ.W    .40
  1554.     MOVE.L    (A0,D0.L),A2
  1555.  
  1556.     MOVE.L    PARAMTABBASE(PC),A0
  1557. .41    CMP.L    #PCH_DATALENGTH,(A0)+
  1558.     BEQ.S    .42
  1559.     ADDQ.L    #4,A0
  1560.     TST.L    (A0)
  1561.     BEQ.W    .ERRINSTRUCT
  1562.     BRA.S    .41
  1563.  
  1564. .42    MOVE.L    (A0),A0
  1565.     MOVE.L    D6,D0
  1566.     LSL.L    #2,D0
  1567.     TST.L    (A0,D0.L)
  1568.     BEQ.W    .ERRINSTRUCT
  1569.     MOVE.L    (A0,D0.L),D0
  1570.     MOVE.L    D0,FILSIZE(A5)
  1571.     ADDQ.L    #7,D0
  1572.     AND.L    #$FFFFFFF8,D0
  1573.     MOVE.L    #MEMF_CLEAR,D1
  1574.     MOVE.L    (_SYSBASE).W,A6
  1575.     JSR    _LVOALLOCMEM(A6)
  1576.     TST.L    D0
  1577.     BEQ.W    .ERRINPARM
  1578.     MOVE.L    D0,FILEMEMADR(A5)    
  1579.  
  1580.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1581.     JSR    (A2)
  1582.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1583.     TST.L    D0
  1584.     BNE.W    .ERRINPARM
  1585.  
  1586.     MOVE.L    PARAMTABBASE(PC),A0
  1587. .43    CMP.L    #PCH_STATE2,(A0)+
  1588.     BEQ.S    .44
  1589.     ADDQ.L    #4,A0
  1590.     TST.L    (A0)
  1591.     BEQ.W    .45
  1592.     BRA.S    .43
  1593.  
  1594. .44    MOVE.L    (A0),A0
  1595.     MOVE.L    D6,D0
  1596.     LSL.L    #2,D0
  1597.     TST.L    (A0,D0.L)
  1598.     BEQ.W    .45
  1599.     MOVE.L    (A0,D0.L),A0
  1600.     MOVE.L    A0,-(A7)
  1601.     MOVE.L    WIN1RASTPORT(PC),A1
  1602.     MOVEQ.L    #0,D0
  1603.     MOVE.L    GRABASE(PC),A6
  1604.     JSR    _LVOSETAPEN(A6)
  1605.     MOVE.L    WIN1RASTPORT(PC),A1
  1606.     MOVE.L    #26,D0
  1607.     MOVE.L    #114,D1
  1608.     MOVE.L    #448,D2
  1609.     MOVE.L    #134,D3
  1610.     MOVE.L    GRABASE(PC),A6
  1611.     JSR    _LVORECTFILL(A6)
  1612.     MOVE.L    WIN1RASTPORT(PC),A1
  1613.     MOVEQ.L    #1,D0
  1614.     MOVE.L    GRABASE(PC),A6
  1615.     JSR    _LVOSETAPEN(A6)
  1616.     MOVE.L    WIN1RASTPORT(PC),A1
  1617.     MOVE.L    #28,D0
  1618.     MOVE.L    #121,D1
  1619.     MOVE.L    GRABASE(PC),A6
  1620.     JSR    _LVOMOVE(A6)
  1621.     MOVE.L    (A7)+,A1
  1622.     MOVE.L    A1,A0
  1623.     BRA.S    .46
  1624.  
  1625. .47    ADDQ.L    #1,A1
  1626. .46    MOVE.B    (A1),D0
  1627.     BEQ.S    .48
  1628.     CMP.B    #$A,D0
  1629.     BNE.S    .47
  1630.     MOVE.L    A1,D0
  1631.     SUB.L    A0,D0
  1632.     MOVE.L    A1,A4
  1633.     MOVE.L    WIN1RASTPORT(PC),A1
  1634.     MOVE.L    GRABASE(PC),A6
  1635.     JSR    _LVOTEXT(A6)
  1636.     MOVE.L    WIN1RASTPORT(PC),A1
  1637.     MOVE.L    #28,D0
  1638.     MOVE.L    #131,D1
  1639.     MOVE.L    GRABASE(PC),A6
  1640.     JSR    _LVOMOVE(A6)
  1641.     ADDQ.L    #1,A4
  1642.     MOVE.L    A4,A0
  1643.     MOVE.L    A0,A1
  1644.     BRA.S    .49
  1645.  
  1646. .50    ADDQ.L    #1,A1
  1647. .49    MOVE.B    (A1),D0
  1648.     BEQ.S    .48
  1649.     CMP.B    #$A,D0
  1650.     BNE.S    .50
  1651. .48    MOVE.L    A1,D0
  1652.     SUB.L    A0,D0
  1653.     MOVE.L    WIN1RASTPORT(PC),A1
  1654.     MOVE.L    GRABASE(PC),A6
  1655.     JSR    _LVOTEXT(A6)
  1656.  
  1657. .45
  1658.     MOVE.L    PARAMTABBASE(PC),A0
  1659. .51    CMP.L    #PCH_PROCESSING,(A0)+
  1660.     BEQ.S    .52
  1661.     ADDQ.L    #4,A0
  1662.     TST.L    (A0)
  1663.     BEQ.S    .53
  1664.     BRA.S    .51
  1665.  
  1666. .52    MOVE.L    (A0),A0
  1667.     MOVE.L    D6,D0
  1668.     LSL.L    #2,D0
  1669.     TST.L    (A0,D0.L)
  1670.     BEQ.S    .53
  1671.     MOVE.L    (A0,D0.L),A0
  1672.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1673.     JSR    (A0)
  1674.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1675.     TST.L    D0
  1676.     BNE.W    .ERRINPARM
  1677. .53    
  1678.     MOVE.L    PARAMTABBASE(PC),A0
  1679. .54    CMP.L    #PCH_CHANGES,(A0)+
  1680.     BEQ.S    .55
  1681.     ADDQ.L    #4,A0
  1682.     TST.L    (A0)
  1683.     BEQ.S    .56
  1684.     BRA.S    .54
  1685.  
  1686. .55    MOVE.L    (A0),A0
  1687.     MOVE.L    D6,D0
  1688.     LSL.L    #2,D0
  1689.     TST.L    (A0,D0.L)
  1690.     BEQ.S    .56
  1691.     MOVE.L    (A0,D0.L),A1
  1692.     BSR.W    MODIFY
  1693.     TST.L    D0
  1694.     BNE.W    .ERRINPARM
  1695.  
  1696. .56    
  1697.     MOVE.L    PARAMTABBASE(PC),A0
  1698. .D29    CMP.L    #PCH_SAVEPGM,(A0)+
  1699.     BEQ.S    .D30
  1700.     ADDQ.L    #4,A0
  1701.     TST.L    (A0)
  1702.     BEQ.S    .D31
  1703.     BRA.S    .D29
  1704.  
  1705. .D30    MOVE.L    (A0),A0
  1706.     MOVE.L    D6,D0
  1707.     LSL.L    #2,D0
  1708.     TST.L    (A0,D0.L)
  1709.     BEQ.S    .D31
  1710.     MOVE.L    (A0,D0.L),A0
  1711.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1712.     JSR    (A0)
  1713.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1714.     TST.L    D0
  1715.     BNE.W    .ERRINPARM
  1716. .D31
  1717.     BRA.W    .33
  1718.  
  1719. .40
  1720. ;CHECK IF BOOTBLOCK IS TO WRITE
  1721.     MOVE.L    PARAMTABBASE(PC),A0
  1722. .59    CMP.L    #PCH_BOOTBLOCK,(A0)+
  1723.     BEQ.S    .60
  1724.     ADDQ.L    #4,A0
  1725.     TST.L    (A0)
  1726.     BEQ.W    .61
  1727.     BRA.S    .59
  1728.  
  1729. .60    MOVE.L    (A0),A0
  1730.     MOVE.L    D6,D0
  1731.     LSL.L    #2,D0
  1732.     TST.L    (A0,D0.L)
  1733.     BEQ.W    .61
  1734.     MOVE.L    (A0,D0.L),A2
  1735.  
  1736. .62
  1737.     LEA.L    LOCKDISK(PC),A1
  1738.     MOVE.L    A1,D1
  1739.     MOVE.L    #MODE_READWRITE,D2
  1740.     MOVE.L    DOSBAS(PC),A6
  1741.     JSR    _LVOLOCK(A6)
  1742.     TST.L    D0
  1743.     BEQ.W    .ERRINPARM
  1744.     MOVE.L    D0,D5
  1745.     MOVE.L    D0,D1
  1746.     MOVE.L    #INFODAT,D2
  1747.     JSR    _LVOINFO(A6)
  1748.     TST.L    D0
  1749.     BEQ.W    .ERRINPARM
  1750. ;OPEN DEVICE 
  1751. ;UNITNUMBER IS IN ID_UNITNUMBER OF INFODAT
  1752.  
  1753.     SUB.L    A4,A4
  1754.     MOVE.L    DOSBAS(PC),D0
  1755.     MOVE.L    DL_ROOT(A4,D0.L),D0
  1756.     MOVE.L    RN_INFO(A4,D0.L),D0
  1757.     LSL.L    #2,D0
  1758.     MOVE.L    DI_DEVINFO(A4,D0.L),D0
  1759.     LSL.L    #2,D0
  1760.     MOVE.L    D0,D4
  1761.     BRA.S    .B1
  1762.  
  1763. .B2    MOVE.L    DN_NEXT(A4,D0.L),D0
  1764.     BEQ.W    .ERRINPARM
  1765.     LSL.L    #2,D0
  1766. .B1    MOVE.L    DN_TYPE(A4,D0.L),D1
  1767.     CMP.L    #2,D1
  1768.     BNE.S    .B2
  1769.     MOVE.L    DN_NAME(A4,D0.L),D1
  1770.     LSL.L    #2,D1
  1771.     ADDQ.L    #1,D1
  1772.     MOVE.L    D1,A1
  1773.     LEA.L    LOCKDISK(PC),A0
  1774. .B3    CMPM.B    (A0)+,(A1)+
  1775.     BEQ.S    .B3
  1776.     CMP.B    #':',-1(A0)
  1777.     BNE.S    .B1
  1778.     TST.B    -1(A1)
  1779.     BNE.S    .B1
  1780.     MOVE.L    DN_TASK(A4,D0.L),D0
  1781.     EXG.L    D0,D4
  1782.     BRA.S    .B4
  1783.  
  1784. .B5    MOVE.L    DN_NEXT(A4,D0.L),D0
  1785.     BEQ.W    .ERRINPARM
  1786.     LSL.L    #2,D0
  1787. .B4    MOVE.L    DN_TYPE(A4,D0.L),D1
  1788.     CMP.L    #0,D1
  1789.     BNE.S    .B5
  1790.     CMP.L    DN_TASK(A4,D0.L),D4
  1791.     BNE.S    .B5
  1792.     MOVE.L    DN_STARTUP(A4,D0.L),D0
  1793.     LSL.L    #2,D0
  1794.     MOVE.L    FSSM_DEVICE(A4,D0.L),D1
  1795.     LSL.L    #2,D1
  1796.     ADDQ.L    #1,D1
  1797.     MOVE.L    D1,A0
  1798.     MOVE.L    BOOTIORQ(PC),A1
  1799.     MOVE.L    FSSM_UNIT(A4,D0.L),D0
  1800.     MOVEQ.L    #0,D1
  1801.     MOVE.L    4.W,A6
  1802.     JSR    _LVOOPENDEVICE(A6)
  1803.     TST.L    D0
  1804.     BNE.W    .ERRINPARM
  1805.     MOVE.L    BOOTIORQ(PC),A1
  1806.     MOVE.W    #CMD_WRITE,IO_COMMAND(A1)
  1807.     MOVE.L    A2,IO_DATA(A1)
  1808.     MOVE.L    #$400,IO_LENGTH(A1)
  1809.     MOVE.L    #$0,IO_OFFSET(A1)
  1810.     JSR    _LVODOIO(A6)
  1811.     MOVE.L    D0,-(A7)
  1812.     MOVE.L    BOOTIORQ(PC),A1
  1813.     JSR    _LVOCLOSEDEVICE(A6)
  1814.     MOVE.L    D5,D1
  1815.     MOVE.L    DOSBAS(PC),A6
  1816.     JSR    _LVOUNLOCK(A6)
  1817.     CLR.L    PARAMLOCK
  1818.  
  1819.     MOVE.L    (A7)+,D0
  1820.     TST.L    D0
  1821.     BNE.W    .ERRINPARM
  1822.     BRA.W    .6
  1823.  
  1824.  
  1825. .61
  1826.     MOVE.L    PARAMTABBASE(PC),A0
  1827. .64    CMP.L    #PCH_SAVEDATA,(A0)+
  1828.     BEQ.S    .63
  1829.     ADDQ.L    #4,A0
  1830.     TST.L    (A0)
  1831.     BEQ.W    .70
  1832.     BRA.S    .64
  1833.  
  1834. .63    MOVE.L    (A0),A0
  1835.     MOVE.L    D6,D0
  1836.     LSL.L    #2,D0
  1837.     TST.L    (A0,D0.L)
  1838.     BEQ.W    .70
  1839.     MOVE.L    (A0,D0.L),A2
  1840.     
  1841.     MOVE.L    PARAMTABBASE(PC),A0
  1842. .65    CMP.L    #PCH_DATALENGTH,(A0)+
  1843.     BEQ.S    .66
  1844.     ADDQ.L    #4,A0
  1845.     TST.L    (A0)
  1846.     BEQ.W    .ERRINSTRUCT
  1847.     BRA.S    .65
  1848.  
  1849. .66    MOVE.L    (A0),A0
  1850.     MOVE.L    D6,D0
  1851.     LSL.L    #2,D0
  1852.     TST.L    (A0,D0.L)
  1853.     BEQ.W    .ERRINSTRUCT
  1854.     MOVE.L    (A0,D0.L),A3
  1855.  
  1856.     MOVE.L    WIN1RASTPORT(PC),A1
  1857.     MOVE.L    #28,D0
  1858.     MOVE.L    #121,D1
  1859.     MOVE.L    GRABASE(PC),A6
  1860.     JSR    _LVOMOVE(A6)
  1861.     MOVE.L    PARAMTABBASE(PC),A0
  1862. .S43    CMP.L    #PCH_STATE2,(A0)+
  1863.     BEQ.S    .S44
  1864.     ADDQ.L    #4,A0
  1865.     TST.L    (A0)
  1866.     BEQ.S    .S45
  1867.     BRA.S    .S43
  1868.  
  1869. .S44    MOVE.L    (A0),A0
  1870.     MOVE.L    D6,D0
  1871.     LSL.L    #2,D0
  1872.     TST.L    (A0,D0.L)
  1873.     BEQ.S    .S45
  1874.     MOVE.L    (A0,D0.L),A0
  1875.     MOVE.L    A0,A1
  1876.     BRA.S    .S46
  1877.  
  1878. .S47    ADDQ.L    #1,A1
  1879. .S46    MOVE.B    (A1),D0
  1880.     BEQ.S    .S48
  1881.     CMP.B    #$A,D0
  1882.     BNE.S    .S47
  1883.     MOVE.L    A1,D0
  1884.     SUB.L    A0,D0
  1885.     MOVE.L    A1,A4
  1886.     MOVE.L    WIN1RASTPORT(PC),A1
  1887.     MOVE.L    GRABASE(PC),A6
  1888.     JSR    _LVOTEXT(A6)
  1889.     MOVE.L    WIN1RASTPORT(PC),A1
  1890.     MOVE.L    #28,D0
  1891.     MOVE.L    #131,D1
  1892.     MOVE.L    GRABASE(PC),A6
  1893.     JSR    _LVOMOVE(A6)
  1894.     ADDQ.L    #1,A4
  1895.     MOVE.L    A4,A0
  1896.     MOVE.L    A0,A1
  1897.     BRA.S    .S49
  1898.  
  1899. .S50    ADDQ.L    #1,A1
  1900. .S49    MOVE.B    (A1),D0
  1901.     BEQ.S    .S48
  1902.     CMP.B    #$A,D0
  1903.     BNE.S    .S50
  1904. .S48    MOVE.L    A1,D0
  1905.     SUB.L    A0,D0
  1906.     MOVE.L    WIN1RASTPORT(PC),A1
  1907.     MOVE.L    GRABASE(PC),A6
  1908.     JSR    _LVOTEXT(A6)
  1909.  
  1910. .S45
  1911.     TST.B    FILENAMEGIVEN
  1912.     BEQ.W    .ERRINSTRUCT
  1913.     LEA.L    FILNAME(PC),A1
  1914.     MOVE.L    A1,D1
  1915.     MOVE.L    #MODE_NEWFILE,D2
  1916.     MOVE.L    DOSBAS(PC),A6
  1917.     JSR    _LVOOPEN(A6)
  1918.     TST.L    D0
  1919.     BEQ.W    ERR
  1920.     MOVE.L    D0,FILHANDLE
  1921.     MOVE.L    FILHANDLE(PC),D1
  1922.     MOVE.L    A2,D2
  1923.  
  1924.     MOVE.L    A3,D3
  1925.     MOVE.L    DOSBAS(PC),A6
  1926.     JSR    _LVOWRITE(A6)
  1927.     TST.L    D0
  1928.     BMI.W    ERR
  1929.     BEQ.W    ERR
  1930.     MOVE.L    FILHANDLE(PC),D1
  1931.     MOVE.L    DOSBAS(PC),A6
  1932.     JSR    _LVOCLOSE(A6)
  1933.     CLR.L    FILHANDLE
  1934.     BRA.W    .6
  1935.  
  1936. .70
  1937. ;MANUELLE DISKBEARBEITUNG
  1938.     LEA.L    FILNAME(PC),A1
  1939.     MOVE.L    A1,D1
  1940.     MOVE.L    #MODE_READWRITE,D2
  1941.     MOVE.L    DOSBAS(PC),A6
  1942.     JSR    _LVOLOCK(A6)
  1943.     TST.L    D0
  1944.     BEQ.W    ERR
  1945.     MOVE.L    D0,PARAMLOCK
  1946.     MOVE.L    PARAMLOCK(PC),D1
  1947.     MOVE.L    #PARAMINFO,D2
  1948.     MOVE.L    DOSBAS(PC),A6
  1949.     JSR    _LVOEXAMINE(A6)
  1950.     TST.L    D0
  1951.     BEQ.W    ERR
  1952.     MOVE.L    PARAMLOCK(PC),D1
  1953.     MOVE.L    DOSBAS(PC),A6
  1954.     JSR    _LVOUNLOCK(A6)
  1955.     CLR.L    PARAMLOCK
  1956.     MOVEQ.L    #0,D5
  1957.     MOVEQ.L    #0,D4
  1958.     MOVE.L    PARAMTABBASE(PC),A0
  1959. .26    CMP.L    #PCH_LOADOFFSET,(A0)+
  1960.     BEQ.S    .28
  1961.     ADDQ.L    #4,A0
  1962.     TST.L    (A0)
  1963.     BEQ.S    .27
  1964.     BRA.S    .26
  1965.  
  1966. .28    MOVE.L    (A0),A0
  1967.     MOVE.L    D6,D0
  1968.     LSL.L    #2,D0
  1969.     MOVE.L    (A0,D0.L),D5
  1970. .27
  1971.     MOVE.L    PARAMTABBASE(PC),A0
  1972. .O26    CMP.L    #PCH_APPENDSPACE,(A0)+
  1973.     BEQ.S    .O28
  1974.     ADDQ.L    #4,A0
  1975.     TST.L    (A0)
  1976.     BEQ.S    .O27
  1977.     BRA.S    .O26
  1978.  
  1979. .O28    MOVE.L    (A0),A0
  1980.     MOVE.L    D6,D0
  1981.     LSL.L    #2,D0
  1982.     MOVE.L    (A0,D0.L),D4
  1983. .O27
  1984.     LEA.L    PARAMINFO,A0
  1985.     MOVE.L    FIB_SIZE(A0),D3
  1986.     ADD.L    D5,D3
  1987.     ADD.L    D4,D3
  1988.  
  1989.     MOVE.L    PARAMTABBASE(PC),A0
  1990. .O6    CMP.L    #PCH_DATALENGTH,(A0)+
  1991.     BEQ.S    .O8
  1992.     ADDQ.L    #4,A0
  1993.     TST.L    (A0)
  1994.     BEQ.S    .O7
  1995.     BRA.S    .O6
  1996.  
  1997. .O8    MOVE.L    (A0),A0
  1998.     MOVE.L    D6,D0
  1999.     LSL.L    #2,D0
  2000.     TST.L    (A0,D0.L)
  2001.     BEQ.S    .O7
  2002.     
  2003.     CMP.L    (A0,D0.L),D3
  2004.     BNE.W    .ERRINLENGTH
  2005. .O7
  2006.     MOVE.L    D3,FILSIZE(A5)
  2007.     MOVE.L    D3,D0
  2008.     ADDQ.L    #7,D0
  2009.     AND.L    #$FFFFFFF8,D0
  2010.     MOVE.L    #MEMF_CLEAR,D1
  2011.     MOVE.L    (_SYSBASE).W,A6
  2012.     JSR    _LVOALLOCMEM(A6)
  2013.     TST.L    D0
  2014.     BEQ.W    ERR
  2015.     MOVE.L    D0,FILEMEMADR(A5)    
  2016.  
  2017.     LEA.L    FILNAME(PC),A1
  2018.     MOVE.L    A1,D1
  2019.     MOVE.L    #MODE_OLDFILE,D2
  2020.     MOVE.L    DOSBAS(PC),A6
  2021.     JSR    _LVOOPEN(A6)
  2022.     TST.L    D0
  2023.     BEQ.W    ERR
  2024.     MOVE.L    D0,FILHANDLE
  2025.     MOVE.L    FILHANDLE(PC),D1
  2026.     MOVE.L    FILEMEMADR(PC),D2
  2027.     ADD.L    D5,D2
  2028.     LEA.L    PARAMINFO,A0
  2029.     MOVE.L    FIB_SIZE(A0),D3
  2030.     MOVE.L    DOSBAS(PC),A6
  2031.     JSR    _LVOREAD(A6)
  2032.     TST.L    D0
  2033.     BMI.W    ERR
  2034.     BEQ.W    ERR
  2035.     MOVE.L    FILHANDLE(PC),D1
  2036.     MOVE.L    DOSBAS(PC),A6
  2037.     JSR    _LVOCLOSE(A6)
  2038.     CLR.L    FILHANDLE
  2039.  
  2040.     MOVE.L    WIN1RASTPORT(PC),A1
  2041.     MOVE.L    #28,D0
  2042.     MOVE.L    #121,D1
  2043.     MOVE.L    GRABASE(PC),A6
  2044.     JSR    _LVOMOVE(A6)
  2045.     MOVE.L    PARAMTABBASE(PC),A0
  2046. .O43    CMP.L    #PCH_STATE2,(A0)+
  2047.     BEQ.S    .O44
  2048.     ADDQ.L    #4,A0
  2049.     TST.L    (A0)
  2050.     BEQ.S    .O45
  2051.     BRA.S    .O43
  2052.  
  2053. .O44    MOVE.L    (A0),A0
  2054.     MOVE.L    D6,D0
  2055.     LSL.L    #2,D0
  2056.     TST.L    (A0,D0.L)
  2057.     BEQ.S    .O45
  2058.     MOVE.L    (A0,D0.L),A0
  2059.     MOVE.L    A0,A1
  2060.     BRA.S    .O46
  2061.  
  2062. .O47    ADDQ.L    #1,A1
  2063. .O46    MOVE.B    (A1),D0
  2064.     BEQ.S    .O48
  2065.     CMP.B    #$A,D0
  2066.     BNE.S    .O47
  2067.     MOVE.L    A1,D0
  2068.     SUB.L    A0,D0
  2069.     MOVE.L    A1,A4
  2070.     MOVE.L    WIN1RASTPORT(PC),A1
  2071.     MOVE.L    GRABASE(PC),A6
  2072.     JSR    _LVOTEXT(A6)
  2073.     MOVE.L    WIN1RASTPORT(PC),A1
  2074.     MOVE.L    #28,D0
  2075.     MOVE.L    #131,D1
  2076.     MOVE.L    GRABASE(PC),A6
  2077.     JSR    _LVOMOVE(A6)
  2078.     ADDQ.L    #1,A4
  2079.     MOVE.L    A4,A0
  2080.     MOVE.L    A0,A1
  2081.     BRA.S    .O49
  2082.  
  2083. .O50    ADDQ.L    #1,A1
  2084. .O49    MOVE.B    (A1),D0
  2085.     BEQ.S    .O48
  2086.     CMP.B    #$A,D0
  2087.     BNE.S    .O50
  2088. .O48    MOVE.L    A1,D0
  2089.     SUB.L    A0,D0
  2090.     MOVE.L    WIN1RASTPORT(PC),A1
  2091.     MOVE.L    GRABASE(PC),A6
  2092.     JSR    _LVOTEXT(A6)
  2093.  
  2094. .O45
  2095.     MOVE.L    PARAMTABBASE(PC),A0
  2096. .29    CMP.L    #PCH_PROCESSING,(A0)+
  2097.     BEQ.S    .30
  2098.     ADDQ.L    #4,A0
  2099.     TST.L    (A0)
  2100.     BEQ.S    .31
  2101.     BRA.S    .29
  2102.  
  2103. .30    MOVE.L    (A0),A0
  2104.     MOVE.L    D6,D0
  2105.     LSL.L    #2,D0
  2106.     TST.L    (A0,D0.L)
  2107.     BEQ.S    .31
  2108.     MOVE.L    (A0,D0.L),A0
  2109.     MOVEM.L    D2-D7/A2-A6,-(A7)
  2110.     JSR    (A0)
  2111.     MOVEM.L    (A7)+,D2-D7/A2-A6
  2112.     TST.L    D0
  2113.     BNE.W    .ERRINPARM
  2114.  
  2115. .31
  2116.     MOVE.L    PARAMTABBASE(PC),A0
  2117. .32    CMP.L    #PCH_CHANGES,(A0)+
  2118.     BEQ.S    .34
  2119.     ADDQ.L    #4,A0
  2120.     TST.L    (A0)
  2121.     BEQ.S    .33
  2122.     BRA.S    .32
  2123.  
  2124. .34    MOVE.L    (A0),A0
  2125.     MOVE.L    D6,D0
  2126.     LSL.L    #2,D0
  2127.     TST.L    (A0,D0.L)
  2128.     BEQ.S    .33
  2129.     MOVE.L    (A0,D0.L),A1
  2130.     BSR.W    MODIFY
  2131.     TST.L    D0
  2132.     BNE.W    .ERRINPARM
  2133. .33
  2134.     TST.B    FILENAMEGIVEN
  2135.     BEQ.S    .58
  2136.     LEA.L    FILNAME(PC),A1
  2137.     MOVE.L    A1,D1
  2138.     MOVE.L    #MODE_NEWFILE,D2
  2139.     MOVE.L    DOSBAS(PC),A6
  2140.     JSR    _LVOOPEN(A6)
  2141.     TST.L    D0
  2142.     BEQ.W    ERR
  2143.     MOVE.L    D0,FILHANDLE
  2144.     MOVE.L    FILHANDLE(PC),D1
  2145.     MOVE.L    FILEMEMADR(PC),D2
  2146.  
  2147.     MOVE.L    FILSIZE(PC),D3
  2148.     MOVE.L    DOSBAS(PC),A6
  2149.     JSR    _LVOWRITE(A6)
  2150.     TST.L    D0
  2151.     BMI.W    ERR
  2152.     BEQ.W    ERR
  2153.     MOVE.L    FILHANDLE(PC),D1
  2154.     MOVE.L    DOSBAS(PC),A6
  2155.     JSR    _LVOCLOSE(A6)
  2156.     CLR.L    FILHANDLE
  2157.  
  2158. .58    MOVE.L    FILEMEMADR(PC),A1
  2159.     MOVE.L    FILSIZE(PC),D0
  2160.     ADDQ.L    #7,D0
  2161.     AND.L    #$FFFFFFF8,D0
  2162.     MOVE.L    (_SYSBASE).W,A6
  2163.     JSR    _LVOFREEMEM(A6)
  2164.     CLR.L    FILEMEMADR(A5)
  2165.     CLR.L    FILSIZE(A5)
  2166.  
  2167.     BRA.W    .6
  2168.  
  2169. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2170.  
  2171. FORMATDEST
  2172.     TST.L    D0
  2173.     BEQ.S    .Y
  2174. .ERR2    MOVEQ.L    #-1,D0
  2175.     RTS
  2176.  
  2177. .Y    MOVEM.L    D2-D7/A2-A6,-(A7)
  2178.     LEA.L    DOSBAS(PC),A5
  2179.     LEA.L    ROOTBL+108*4+1(PC),A1
  2180.     MOVEQ.L    #-1,D1
  2181. .2    CMP.B    #30,D1
  2182.     BEQ.S    .1
  2183.     ADDQ.B    #1,D1
  2184.     MOVE.B    (A0)+,(A1)+
  2185.     BNE.S    .2
  2186. .1    MOVE.B    D1,ROOTBL+108*4
  2187.     CLR.L    ROOTBL+$5*4
  2188.     LEA.L    ROOTBL(PC),A1
  2189.     MOVEQ.L    #0,D1
  2190.     MOVEQ.L    #$200/4-1,D0
  2191. .3    ADD.L    (A1)+,D1
  2192.     DBF    D0,.3
  2193.     NEG.L    D1
  2194.     MOVE.L    D1,ROOTBL+5*4
  2195.  
  2196.     MOVE.L    #DESTDEVICE,D1
  2197.     MOVE.L    DOSBAS(PC),A6
  2198.     JSR    _LVODEVICEPROC(A6)
  2199.     TST.L    D0
  2200.     BEQ.S    .ERR2
  2201.     MOVE.L    D0,A3
  2202.     MOVE.L    DOSPACKETS(PC),A1
  2203.     LEA.L    $14(A1),A0
  2204.     MOVE.L    A0,LN_NAME(A1)
  2205.     MOVE.L    A1,$14+DP_LINK(A1)
  2206.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2207.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2208.     MOVE.L    #-1,$14+DP_ARG1(A1)
  2209.     MOVE.L    A3,A0
  2210.     MOVE.L    (_SYSBASE).W,A6
  2211.     JSR    _LVOPUTMSG(A6)
  2212.     MOVE.L    MYPORT(PC),A0
  2213.     JSR    _LVOWAITPORT(A6)
  2214.     MOVE.L    MYPORT(PC),A0
  2215.     JSR    _LVOGETMSG(A6)
  2216.  
  2217.  
  2218. ;MESSAGE+DOSPACKET-STRUKTUR EINRICHTEN
  2219.  
  2220.     LEA.L    FORMATQUEST(PC),A0
  2221.     LEA.L    FORMATQUEST2(PC),A1
  2222.     BSR.W    ASKREQUEST
  2223.     TST.L    D0
  2224.     BEQ.S    .4
  2225. .ERR    MOVE.L    DOSPACKETS(PC),A1
  2226.     LEA.L    $14(A1),A0
  2227.     MOVE.L    A0,LN_NAME(A1)
  2228.     MOVE.L    A1,$14+DP_LINK(A1)
  2229.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2230.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2231.     MOVE.L    #0,$14+DP_ARG1(A1)
  2232.     MOVE.L    A3,A0
  2233.     MOVE.L    (_SYSBASE).W,A6
  2234.     JSR    _LVOPUTMSG(A6)
  2235.     MOVE.L    MYPORT(PC),A0
  2236.     JSR    _LVOWAITPORT(A6)
  2237.     MOVE.L    MYPORT(PC),A0
  2238.     JSR    _LVOGETMSG(A6)
  2239.  
  2240.     MOVEM.L    (A7)+,D2-D7/A2-A6
  2241.     MOVEQ.L    #-1,D0
  2242.     RTS
  2243.  
  2244. .4    
  2245.     MOVEQ.L    #0,D7
  2246.     MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2247.     MOVE.W    #TD_CHANGESTATE,IO_COMMAND(A1)
  2248.     MOVE.L    (_SYSBASE).W,A6
  2249.     JSR    _LVODOIO(A6)
  2250.     TST.L    IO_ACTUAL(A1)
  2251.     BNE.S    .ERR
  2252.  
  2253.     MOVE.W    #$1600/4-1,D0
  2254.     MOVE.L    DOSBAS+PTB_SPACE(A5),A0
  2255. .7    CLR.L    (A0)+
  2256. ;.7    MOVE.L    #$AA,(A0)+
  2257.     DBF    D0,.7
  2258. ;    MOVE.L    DOSBAS+PTB_SPACE(A5),A0
  2259. ;    MOVE.L    A0,(A0)
  2260.  
  2261.     MOVE.L    #$0,D2
  2262.  
  2263. .8    MOVEQ.L    #$4,D6
  2264. .55    MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2265.     MOVE.L    DOSBAS+PTB_SPACE(A5),IO_DATA(A1)
  2266.     MOVE.L    #$1600,IO_LENGTH(A1)
  2267.     MOVE.L    D2,IO_OFFSET(A1)
  2268.     MOVE.W    #TD_FORMAT,IO_COMMAND(A1)
  2269.     MOVE.L    (_SYSBASE).W,A6
  2270.     JSR    _LVODOIO(A6)
  2271.     TST.L    D0
  2272.     BEQ.S    .R1OK
  2273.     DBF    D6,.55
  2274.     BRA.W    .ERR
  2275.  
  2276. .R1OK    ADD.L    #$1600,D2
  2277.     CMP.L    #$A0*$1600,D2
  2278.     BNE.S    .8
  2279.  
  2280.     MOVEQ.L    #$4,D6
  2281. .REP    MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2282.     MOVE.L    #ROOTBL,IO_DATA(A1)
  2283.     MOVE.L    #$400,IO_LENGTH(A1)
  2284.     MOVE.L    #$370*$200,IO_OFFSET(A1)
  2285.     MOVE.W    #CMD_WRITE,IO_COMMAND(A1)
  2286.     MOVE.L    (_SYSBASE).W,A6
  2287.     JSR    _LVODOIO(A6)
  2288.     TST.L    D0
  2289.     BEQ.S    .R2OK
  2290.     DBF    D6,.REP
  2291.     BRA.W    .ERR
  2292.  
  2293. .R2OK
  2294.     MOVEQ.L    #BOOTEND-BOOTBL-1,D0
  2295.     LEA.L    BOOTBL(PC),A0
  2296.     MOVE.L    DOSBAS+PTB_SPACE(A5),A1
  2297. .9    MOVE.B    (A0)+,(A1)+
  2298.     DBF    D0,.9
  2299.     MOVEQ.L    #$4,D6
  2300. .REP2    MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2301.     MOVE.L    DOSBAS+PTB_SPACE(A5),IO_DATA(A1)
  2302.     MOVE.L    #$400,IO_LENGTH(A1)
  2303.     MOVE.L    #$0*$200,IO_OFFSET(A1)
  2304.     MOVE.W    #CMD_WRITE,IO_COMMAND(A1)
  2305.     MOVE.L    (_SYSBASE).W,A6
  2306.     JSR    _LVODOIO(A6)
  2307.     TST.L    D0
  2308.     BEQ.S    .R3OK
  2309.     DBF    D6,.REP2
  2310.     BRA.W    .ERR
  2311.  
  2312. .R3OK
  2313.     MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2314.     MOVE.W    #CMD_UPDATE,IO_COMMAND(A1)
  2315.     MOVE.L    (_SYSBASE).W,A6
  2316.     JSR    _LVODOIO(A6)
  2317.     TST.L    D0
  2318.     BEQ.S    .R4OK
  2319.     BRA.W    .ERR
  2320.  
  2321. .R4OK    MOVE.L    DOSBAS+PTB_DEVICESOURCEPTR(A5),A1
  2322.     MOVE.L    #0,IO_LENGTH(A1)
  2323.     MOVE.W    #TD_MOTOR,IO_COMMAND(A1)
  2324.     MOVE.L    (_SYSBASE).W,A6
  2325.     JSR    _LVODOIO(A6)
  2326.  
  2327.     MOVE.L    DOSPACKETS(PC),A1
  2328.     LEA.L    $14(A1),A0
  2329.     MOVE.L    A0,LN_NAME(A1)
  2330.     MOVE.L    A1,$14+DP_LINK(A1)
  2331.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2332.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2333.     MOVE.L    #0,$14+DP_ARG1(A1)
  2334.     MOVE.L    A3,A0
  2335.     MOVE.L    (_SYSBASE).W,A6
  2336.     JSR    _LVOPUTMSG(A6)
  2337.     MOVE.L    MYPORT(PC),A0
  2338.     JSR    _LVOWAITPORT(A6)
  2339.     MOVE.L    MYPORT(PC),A0
  2340.     JSR    _LVOGETMSG(A6)
  2341.  
  2342.     MOVEM.L    (A7)+,D2-D7/A2-A6
  2343.     MOVEQ.L    #0,D0
  2344.     RTS
  2345.  
  2346.  
  2347. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2348.  
  2349. ASKREQUEST
  2350.     MOVE.L    A0,ASKING
  2351.     MOVE.L    A1,ASKING2
  2352.     MOVEM.L    D2/D3/A2/A3,-(A7)
  2353.     SUBA.L    A0,A0
  2354.     LEA.L    BODYTEXT(PC),A1
  2355.     LEA.L    LEFTTEXT(PC),A2
  2356.     LEA.L    RIGHTTEXT(PC),A3
  2357.     MOVEQ    #0,D0
  2358.     MOVEQ    #0,D1
  2359.     MOVE.W    #300,D2
  2360.     MOVEQ    #60,D3
  2361.     MOVE.L    INTUIBASE(PC),A6
  2362.     JSR    _LVOAUTOREQUEST(A6)
  2363.     MOVEM.L    (A7)+,D2/D3/A2/A3
  2364.     TST.L    D0
  2365.     BEQ.S    .1
  2366. ;.OK
  2367.     MOVEQ.L    #0,D0
  2368.     RTS
  2369.  
  2370. ;.CANCEL
  2371. .1    MOVEQ.L    #-1,D0
  2372.     RTS
  2373.  
  2374. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2375.  
  2376. INHIBITDRIVE
  2377.     MOVEM.L    D1-A6,-(A7)
  2378.     CMP.L    #0,D0
  2379.     BNE.S    .1
  2380.     LEA.L    SRCDEVICE(PC),A2
  2381.     BRA.S    .3
  2382.  
  2383. .1    CMP.L    #1,D0
  2384.     BNE.S    .2
  2385.     LEA.L    DESTDEVICE(PC),A2
  2386.     BRA.S    .3
  2387.  
  2388. .ERR
  2389. .2    ST.B    D0
  2390.     MOVEM.L    (A7)+,D1-A6
  2391.     RTS
  2392.  
  2393. .3    MOVE.L    A2,D1
  2394.     MOVE.L    DOSBAS(PC),A6
  2395.     JSR    _LVODEVICEPROC(A6)
  2396.     TST.L    D0
  2397.     BEQ.S    .ERR
  2398.     MOVE.L    D0,A3
  2399.     MOVE.L    DOSPACKETS(PC),A1
  2400.     LEA.L    $14(A1),A0
  2401.     MOVE.L    A0,LN_NAME(A1)
  2402.     MOVE.L    A1,$14+DP_LINK(A1)
  2403.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2404.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2405.     MOVE.L    #-1,$14+DP_ARG1(A1)
  2406.     MOVE.L    A3,A0
  2407.     MOVE.L    (_SYSBASE).W,A6
  2408.     JSR    _LVOPUTMSG(A6)
  2409.     MOVE.L    MYPORT(PC),A0
  2410.     JSR    _LVOWAITPORT(A6)
  2411.     MOVE.L    MYPORT(PC),A0
  2412.     JSR    _LVOGETMSG(A6)
  2413.     MOVEQ.L    #0,D0
  2414.     MOVEM.L    (A7)+,D1-A6
  2415.     RTS
  2416.  
  2417. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2418.  
  2419. ENABLEDRIVE
  2420.     MOVEM.L    D1-A6,-(A7)
  2421.     CMP.L    #0,D0
  2422.     BNE.S    .1
  2423.     LEA.L    SRCDEVICE(PC),A2
  2424.     BRA.S    .3
  2425.  
  2426. .1    CMP.L    #1,D0
  2427.     BNE.S    .2
  2428.     LEA.L    DESTDEVICE(PC),A2
  2429.     BRA.S    .3
  2430.  
  2431. .ERR
  2432. .2    ST.B    D0
  2433.     MOVEM.L    (A7)+,D1-A6
  2434.     RTS
  2435.  
  2436. .3    MOVE.L    A2,D1
  2437.     MOVE.L    DOSBAS(PC),A6
  2438.     JSR    _LVODEVICEPROC(A6)
  2439.     TST.L    D0
  2440.     BEQ.S    .ERR
  2441.     MOVE.L    D0,A3
  2442.     MOVE.L    DOSPACKETS(PC),A1
  2443.     LEA.L    $14(A1),A0
  2444.     MOVE.L    A0,LN_NAME(A1)
  2445.     MOVE.L    A1,$14+DP_LINK(A1)
  2446.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2447.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2448.     MOVE.L    #0,$14+DP_ARG1(A1)
  2449.     MOVE.L    A3,A0
  2450.     MOVE.L    (_SYSBASE).W,A6
  2451.     JSR    _LVOPUTMSG(A6)
  2452.     MOVE.L    MYPORT(PC),A0
  2453.     JSR    _LVOWAITPORT(A6)
  2454.     MOVE.L    MYPORT(PC),A0
  2455.     JSR    _LVOGETMSG(A6)
  2456.     MOVEQ.L    #0,D0
  2457.     MOVEM.L    (A7)+,D1-A6
  2458.     RTS
  2459.  
  2460. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2461.  
  2462. schlafen
  2463.     move.l    WINDOW1(PC),a0        ;Windowstruktur nach a0
  2464.     move.l    $56(a0),a0        ;UserPort holen
  2465.     move.l    a0,a3            ;retten
  2466. .3    move.l    a3,a0            ;userPort holen
  2467.     move.l    (_SYSBASE).W,a6        ;execBase nach a6
  2468.     jsr    _LVOGETMSG(a6)        ;Nachricht holen
  2469.     move.l    d0,a1            ;und sichern
  2470.     TST.L    D0
  2471.     BNE.S    .4
  2472.  
  2473.     MOVE.L    A3,A0
  2474.     move.b    $0f(a0),d1        ;Signalmaske holen
  2475.     moveq    #0,d0            ;d0 löschen
  2476.     bset    d1,d0            ;benötigte Signale setzen
  2477.     move.l    (_SYSBASE).W,A6        ;auf Nachricht
  2478.     jsr    _LVOWAIT(a6)        ;warten
  2479.     BRA.S    .3
  2480.  
  2481. .4    move.l    $14(a1),d4        ;diverse
  2482.     move.W    $12(a1),d5        ;Parameter
  2483.     LEA.L    $14(A1),A0
  2484.     LEA.L    MSGBUFFER+2(PC),A2
  2485.     MOVE.W    D5,MSGBUFFER
  2486.     CMP.W    #$20,D5
  2487.     BLO.S    .2
  2488.     MOVE.L    #$20,D5
  2489. .2    SUBQ.W    #1,D5
  2490. .1    MOVE.B    (A0)+,(A2)+
  2491.     DBF    D5,.1
  2492.     move.l    $1c(a1),a4        ;sichern
  2493.     move.l    (_SYSBASE).W,A6        ;execBase nach a6
  2494.     jsr    _LVOREPLYMSG(A6)    ;Nachricht beantworten
  2495.     rts
  2496.  
  2497. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2498.  
  2499. GETPARPTR    LEA.L    MEMORYBASE(PC),A3
  2500.     BRA.S    .3
  2501.  
  2502. .1    MOVE.L    (A3),A3
  2503.     CMP.L    #0,A3
  2504.     BEQ.S    .5
  2505. .3    DBF    D0,.1
  2506.     MOVE.L    4(A3),A2
  2507. .2    CMP.L    #PCH_NAME,(A2)+
  2508.     BEQ.S    .4
  2509.     ADDQ.L    #4,A2
  2510.     BRA.S    .2
  2511.  
  2512. .4    MOVE.L    (A2),D0
  2513.     RTS
  2514.  
  2515. .5    MOVE.L    #TEXT1,D0
  2516.     RTS
  2517.  
  2518. ;---------------------------------------------------------------------------
  2519.  
  2520. ;PROGRAM FOR MODIFYING
  2521. ;DATAFORMAT OF COMPTAB SEE MAKECOMP
  2522. ;IT USES THE REGISTERS A0,A1,A3 AND D0,D1
  2523. ;/ A3 FILEBUFFER
  2524. ;< A1 ^COMPTAB
  2525. ;> D0 ERROR, IF SET
  2526.  
  2527. MODIFY    MOVE.L    FILEMEMADR(PC),A3
  2528.  
  2529. .3    MOVE.L    (A1)+,D0
  2530.     MOVE.L    D0,D1
  2531.     AND.L    #$1FFFFF,D1
  2532.     LEA.L    (A3,D1.L),A0
  2533.     AND.L    #$E00000,D0    ;CAN DETECT ANY COMBINATION OF BITS $15 - $17
  2534.     CMP.L    #$400000,D0
  2535.     BEQ.S    .1
  2536.     CMP.L    #$800000,D0
  2537.     BEQ.S    .2
  2538.     CMP.L    #$0,D0
  2539.     BNE.S    .ERRMODIFY    ;ILLEGAL SPECIAL VALUE - HERE NOT SUPPORTED
  2540.     MOVE.B    (A1),(A0)
  2541.     BRA.S    .3
  2542.  
  2543. .2    MOVEQ.L    #0,D1
  2544.     MOVE.B    (A1)+,D1
  2545.     SUBQ.L    #1,D1
  2546. .4    MOVE.B    (A1)+,(A0)+
  2547.     DBF    D1,.4
  2548.     MOVE.L    A1,D1
  2549.     AND.L    #$FFFFFFFE,D1
  2550.     MOVE.L    D1,A1
  2551.     BRA.S    .3
  2552.  
  2553. .1    CLR.L    D0
  2554.     RTS
  2555.  
  2556. .ERRMODIFY    MOVEQ.L    #-$1,D0
  2557.     RTS
  2558.  
  2559. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2560.  
  2561. EXAMCL
  2562. .1    CMP.B    #$20,(A0)
  2563.     BNE.S    .2
  2564.     ADDQ.L    #1,A0
  2565.     BRA.S    .1
  2566.  
  2567. .2    CMP.B    #$9,(A0)
  2568.     BNE.S    .3
  2569.     ADDQ.L    #1,A0
  2570.     BRA.S    .1
  2571.  
  2572. .3    CMP.B    #$A,(A0)
  2573.     BNE.S    .4
  2574.     RTS
  2575.  
  2576. .4    CMP.B    #$0,(A0)
  2577.     BNE.S    .5
  2578. .6    RTS
  2579.  
  2580. .5    CMP.B    #'-',(A0)
  2581.     BNE.S    .6
  2582.     ADDQ.L    #1,A0
  2583.     CMP.B    #'s',(A0)
  2584.     BNE.S    .7
  2585.     ADDQ.L    #1,A0
  2586.     LEA.L    SRCDEVICE(PC),A1
  2587. .10    MOVE.B    (A0)+,(A1)+
  2588.     CMP.B    #$20,(A0)
  2589.     BEQ.S    .1
  2590.     CMP.B    #$9,(A0)
  2591.     BEQ.S    .1
  2592.     CMP.B    #$A,(A0)
  2593.     BEQ.S    .9
  2594.     CMP.B    #$0,(A0)
  2595.     BNE.S    .10
  2596. .9    RTS
  2597.  
  2598. .7    CMP.B    #'d',(A0)
  2599.     BNE.S    .P1
  2600.     ADDQ.L    #1,A0
  2601.     LEA.L    DESTDEVICE(PC),A1
  2602.     BRA.S    .10
  2603.  
  2604. .p1    CMP.B    #'p',(A0)
  2605.     BNE.S    .6
  2606.     ADDQ.L    #1,A0
  2607.     ST    EXEC1PARAM
  2608.     LEA.L    PARAMFILENAM(PC),A1
  2609.     BRA.S    .10
  2610.  
  2611. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2612.  
  2613.     ENDB    A5
  2614. OPENDEV    MOVEM.L    D1-A6,-(A7)
  2615.     CMP.L    #0,D0
  2616.     BNE.S    .1
  2617.     LEA.L    SRCDEVICE(PC),A2
  2618.     MOVE.L    SOURCEIORQ(PC),A3
  2619.     LEA.L    DEVICESOURCEPTR(PC),A5
  2620.     BRA.S    .3
  2621.  
  2622. .1    CMP.L    #1,D0
  2623.     BNE.S    .2
  2624.     LEA.L    DESTDEVICE(PC),A2
  2625.     MOVE.L    DESTIORQ(PC),A3
  2626.     LEA.L    DEVICEDESTPTR(PC),A5
  2627.     BRA.S    .3
  2628.  
  2629. .ERR
  2630. .2    ST.B    D0
  2631.     MOVEM.L    (A7)+,D1-A6
  2632.     RTS
  2633.  
  2634. .3    SUB.L    A4,A4                ;A4 IS ZERO!
  2635.     MOVE.L    DOSBAS(PC),D0
  2636.     MOVE.L    DL_ROOT(A4,D0.L),D0
  2637.     MOVE.L    RN_INFO(A4,D0.L),D0
  2638.     LSL.L    #2,D0
  2639.     MOVE.L    DI_DEVINFO(A4,D0.L),D0
  2640.     LSL.L    #2,D0
  2641.     MOVE.L    D0,D4
  2642.     BRA.S    .6
  2643.  
  2644. .5    MOVE.L    DN_NEXT(A4,D0.L),D0
  2645.     BEQ.S    .ERR
  2646.     LSL.L    #2,D0
  2647. .6    MOVE.L    DN_TYPE(A4,D0.L),D1
  2648.     CMP.L    #0,D1
  2649.     BNE.S    .5
  2650.     MOVE.L    DN_NAME(A4,D0.L),D1
  2651.     LSL.L    #2,D1
  2652.     ADDQ.L    #1,D1
  2653.     MOVE.L    D1,A1
  2654.     MOVE.L    A2,A0
  2655. .7    MOVE.B    (A0)+,D2
  2656.     MOVE.B    (A1)+,D3
  2657.     CMP.B    #$61,D2
  2658.     BLO.S    .S1
  2659.     CMP.B    #$7A,D2
  2660.     BHI.S    .S1
  2661.     AND.B    #%11011111,D2
  2662. .S1    CMP.B    #$61,D3
  2663.     BLO.S    .S2
  2664.     CMP.B    #$7A,D3
  2665.     BHI.S    .S2
  2666.     AND.B    #%11011111,D3
  2667. .S2    CMP.B    D2,D3
  2668.     BEQ.S    .7
  2669.     CMP.B    #':',-1(A0)
  2670.     BNE.S    .5
  2671.     TST.B    -1(A1)
  2672.     BNE.S    .5
  2673.     MOVE.L    DN_STARTUP(A4,D0.L),D0
  2674.     LSL.L    #2,D0
  2675.     MOVE.L    D0,(FSSMSOURCEPTR-DEVICESOURCEPTR)(A5)
  2676.     MOVE.L    FSSM_DEVICE(A4,D0.L),D1
  2677.     LSL.L    #2,D1
  2678.     ADDQ.L    #1,D1
  2679.     MOVE.L    D1,A0
  2680.     MOVE.L    FSSM_UNIT(A4,D0.L),D0
  2681.     MOVE.L    A3,A1
  2682.     MOVEQ.L    #0,D1
  2683.     MOVE.L    4.W,A6
  2684.     JSR    _LVOOPENDEVICE(A6)
  2685.     TST.L    D0
  2686.     BNE.S    .4
  2687.     MOVE.L    A3,(A5)
  2688. .4    MOVEM.L    (A7)+,D1-A6
  2689.     RTS
  2690.  
  2691. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2692.  
  2693. CRCEVAL        movem.l    d2/d5/d7/A1,-(a7)
  2694.         move.l    d0,d7
  2695.         moveq    #0,d0
  2696.         lea    .CRC16table(pc),a1    ;CRC16 table for speed up
  2697.         move.w    #$ff,d1
  2698.         moveq    #0,d2
  2699. .loop        move.b    (a0)+,d2        ;take a byte
  2700.         eor.w    d2,d0
  2701.         move.w    d0,d5
  2702.         and.w    d1,d0
  2703.         add.w    d0,d0
  2704.         move.w    (a1,d0.w),d0
  2705.         lsr.w    #8,d5
  2706.         eor.w    d5,d0
  2707.         subq.l    #1,d7
  2708.         bne    .loop
  2709.         movem.l    (a7)+,d2/d5/d7/A1
  2710.         rts
  2711.  
  2712. .CRC16table:
  2713.     dc.w  $0000,$c0c1,$c181,$0140,$c301,$03c0,$0280,$c241
  2714.     dc.w  $c601,$06c0,$0780,$c741,$0500,$c5c1,$c481,$0440
  2715.     dc.w  $cc01,$0cc0,$0d80,$cd41,$0f00,$cfc1,$ce81,$0e40
  2716.     dc.w  $0a00,$cac1,$cb81,$0b40,$c901,$09c0,$0880,$c841
  2717.     dc.w  $d801,$18c0,$1980,$d941,$1b00,$dbc1,$da81,$1a40
  2718.     dc.w  $1e00,$dec1,$df81,$1f40,$dd01,$1dc0,$1c80,$dc41
  2719.     dc.w  $1400,$d4c1,$d581,$1540,$d701,$17c0,$1680,$d641
  2720.     dc.w  $d201,$12c0,$1380,$d341,$1100,$d1c1,$d081,$1040
  2721.     dc.w  $f001,$30c0,$3180,$f141,$3300,$f3c1,$f281,$3240
  2722.     dc.w  $3600,$f6c1,$f781,$3740,$f501,$35c0,$3480,$f441
  2723.     dc.w  $3c00,$fcc1,$fd81,$3d40,$ff01,$3fc0,$3e80,$fe41
  2724.     dc.w  $fa01,$3ac0,$3b80,$fb41,$3900,$f9c1,$f881,$3840
  2725.     dc.w  $2800,$e8c1,$e981,$2940,$eb01,$2bc0,$2a80,$ea41
  2726.     dc.w  $ee01,$2ec0,$2f80,$ef41,$2d00,$edc1,$ec81,$2c40
  2727.     dc.w  $e401,$24c0,$2580,$e541,$2700,$e7c1,$e681,$2640
  2728.     dc.w  $2200,$e2c1,$e381,$2340,$e101,$21c0,$2080,$e041
  2729.     dc.w  $a001,$60c0,$6180,$a141,$6300,$a3c1,$a281,$6240
  2730.     dc.w  $6600,$a6c1,$a781,$6740,$a501,$65c0,$6480,$a441
  2731.     dc.w  $6c00,$acc1,$ad81,$6d40,$af01,$6fc0,$6e80,$ae41
  2732.     dc.w  $aa01,$6ac0,$6b80,$ab41,$6900,$a9c1,$a881,$6840
  2733.     dc.w  $7800,$b8c1,$b981,$7940,$bb01,$7bc0,$7a80,$ba41
  2734.     dc.w  $be01,$7ec0,$7f80,$bf41,$7d00,$bdc1,$bc81,$7c40
  2735.     dc.w  $b401,$74c0,$7580,$b541,$7700,$b7c1,$b681,$7640
  2736.     dc.w  $7200,$b2c1,$b381,$7340,$b101,$71c0,$7080,$b041
  2737.     dc.w  $5000,$90c1,$9181,$5140,$9301,$53c0,$5280,$9241
  2738.     dc.w  $9601,$56c0,$5780,$9741,$5500,$95c1,$9481,$5440
  2739.     dc.w  $9c01,$5cc0,$5d80,$9d41,$5f00,$9fc1,$9e81,$5e40
  2740.     dc.w  $5a00,$9ac1,$9b81,$5b40,$9901,$59c0,$5880,$9841
  2741.     dc.w  $8801,$48c0,$4980,$8941,$4b00,$8bc1,$8a81,$4a40
  2742.     dc.w  $4e00,$8ec1,$8f81,$4f40,$8d01,$4dc0,$4c80,$8c41
  2743.     dc.w  $4400,$84c1,$8581,$4540,$8701,$47c0,$4680,$8641
  2744.     dc.w  $8201,$42c0,$4380,$8341,$4100,$81c1,$8081,$4040
  2745.  
  2746.  
  2747. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2748.  
  2749. DISPLAYSTATE
  2750.     MOVEM.L    D2/D3/A4/A6,-(A7)
  2751.     MOVE.L    A0,-(A7)
  2752.     MOVE.L    WIN1RASTPORT(PC),A1
  2753.     MOVEQ.L    #0,D0
  2754.     MOVE.L    GRABASE(PC),A6
  2755.     JSR    _LVOSETAPEN(A6)
  2756.     MOVE.L    WIN1RASTPORT(PC),A1
  2757.     MOVE.L    #26,D0
  2758.     MOVE.L    #114,D1
  2759.     MOVE.L    #448,D2
  2760.     MOVE.L    #134,D3
  2761.     MOVE.L    GRABASE(PC),A6
  2762.     JSR    _LVORECTFILL(A6)
  2763.     MOVE.L    WIN1RASTPORT(PC),A1
  2764.     MOVEQ.L    #1,D0
  2765.     MOVE.L    GRABASE(PC),A6
  2766.     JSR    _LVOSETAPEN(A6)
  2767.     MOVE.L    WIN1RASTPORT(PC),A1
  2768.     MOVE.L    #28,D0
  2769.     MOVE.L    #121,D1
  2770.     MOVE.L    GRABASE(PC),A6
  2771.     JSR    _LVOMOVE(A6)
  2772.     MOVE.L    (A7)+,A1
  2773.     MOVE.L    A1,A0
  2774.     BRA.S    .46
  2775.  
  2776. .47    ADDQ.L    #1,A1
  2777. .46    MOVE.B    (A1),D0
  2778.     BEQ.S    .48
  2779.     CMP.B    #$A,D0
  2780.     BNE.S    .47
  2781.     MOVE.L    A1,D0
  2782.     SUB.L    A0,D0
  2783.     MOVE.L    A1,A4
  2784.     MOVE.L    WIN1RASTPORT(PC),A1
  2785.     MOVE.L    GRABASE(PC),A6
  2786.     JSR    _LVOTEXT(A6)
  2787.     MOVE.L    WIN1RASTPORT(PC),A1
  2788.     MOVE.L    #28,D0
  2789.     MOVE.L    #131,D1
  2790.     MOVE.L    GRABASE(PC),A6
  2791.     JSR    _LVOMOVE(A6)
  2792.     ADDQ.L    #1,A4
  2793.     MOVE.L    A4,A0
  2794.     MOVE.L    A0,A1
  2795.     BRA.S    .49
  2796.  
  2797. .50    ADDQ.L    #1,A1
  2798. .49    MOVE.B    (A1),D0
  2799.     BEQ.S    .48
  2800.     CMP.B    #$A,D0
  2801.     BNE.S    .50
  2802. .48    MOVE.L    A1,D0
  2803.     SUB.L    A0,D0
  2804.     MOVE.L    WIN1RASTPORT(PC),A1
  2805.     MOVE.L    GRABASE(PC),A6
  2806.     JSR    _LVOTEXT(A6)
  2807.     MOVEM.L    (A7)+,D2/D3/A4/A6
  2808.     RTS
  2809.     
  2810.  
  2811. *******************************************************************************
  2812.  
  2813. OPERFINI    DC.B    'Operation finished.'
  2814. OPERFINIEND    DC.B    0
  2815.     EVEN
  2816.  
  2817. INSCOPY    DC.B    'Please insert a copy of your disk'
  2818. INSCOPYEND    DC.B    0
  2819.     EVEN
  2820.  
  2821. WAITPROC    DC.B    'and wait for processing.'
  2822. WAITPROCEND    DC.B    0
  2823.     EVEN
  2824.  
  2825. READY    DC.B    'Ready to start.'
  2826. READYEND    DC.B    0
  2827.     EVEN
  2828.  
  2829. WRITTEN    DC.B    'Written by Egon and Harry.'
  2830. WRITTENEND    DC.B    0
  2831.     EVEN
  2832.  
  2833. NOSELECT    DC.B    'No parameter selected.'
  2834. NOSELECTEND    DC.B    0
  2835.     EVEN
  2836.  
  2837. NOSELECT2    DC.B    '!!! NO PARAMETER SELECTED, GUY !!!'
  2838. NOSELECT2END    DC.B    0
  2839.     EVEN
  2840.  
  2841. ERRORINPARM    DC.B    'Error in parameter execution.'
  2842. ERRORINPARMEND    DC.B    0
  2843.     EVEN
  2844.  
  2845. ERRORINSTRUCT    DC.B    'Error in parameter structure.'
  2846. ERRORINSTRUCTEND    DC.B    0
  2847.     EVEN
  2848.  
  2849. ERRORLENGTH    DC.B    'Wrong file length.'
  2850. ERRORLENGTHEND    DC.B    0
  2851.     EVEN
  2852.  
  2853. ERRORGAME    DC.B    'Possibly another game version.'
  2854. ERRORGAMEEND    DC.B    0
  2855.     EVEN
  2856.  
  2857. WELCOME    DC.B    'Welcome to THE PATCHER!'
  2858. WELCOMEEND    DC.B    0
  2859.     EVEN
  2860.  
  2861. FORMATQUEST    DC.B    'Shall I format that disk in the',0
  2862. FORMATQUEST2    DC.B    'destination drive?',0
  2863.  
  2864. FILENAM    DC.B    'PARAMETER/'
  2865. BUFFILNAM    DS.B    $68
  2866.     EVEN
  2867.  
  2868. LOCKNAM    DC.B    'PARAMETER',0
  2869.     EVEN
  2870.  
  2871. MSGBUFFER    DS.B    $22
  2872.  
  2873. FILNAME    DS.B    $100
  2874. LOCKDISK    DS.B    $100
  2875.  
  2876. RUBY_FNT    DC.L    RUBYNAME        ;FONTNAME
  2877.     DC.W    8                ;HÖHE
  2878.     DC.B    $0                ;STYLE
  2879.     DC.B    $2+8                ;FLAGS
  2880.  
  2881.     DC.W    0
  2882.  
  2883. RUBYNAME    DC.B    'ruby.font',0
  2884.     EVEN
  2885. Window1Daten    dc.w    0            ;leftEdge
  2886.         dc.w    0            ;topEdge
  2887.         dc.w    480            ;width
  2888.         dc.w    180            ;height
  2889.         dc.b    0            ;detailPen
  2890.         dc.b    1            ;blockPen
  2891.         dc.l    ICDMPFL            ;idcmpFlags
  2892.         dc.l    Flaggen            ;flags
  2893.         dc.l    PTCHGADGET        ;firstGadget
  2894.         dc.l    0            ;checkMark
  2895.         dc.l    WINDOWTITEL        ;title
  2896.         dc.l    0
  2897.         dc.l    0            ;bitMap
  2898.         dc.w    500            ;minWidth
  2899.         dc.w    180+2            ;minHeight
  2900.         dc.w    500            ;maxWidth
  2901.         dc.w    180+2            ;maxHeight
  2902.         dc.w    WBENCHSCREEN        ;type
  2903.  
  2904. WindowTitel:    dc.b    "THE PATCHER V1.05",0
  2905.         EVEN
  2906.  
  2907. PTCHGADGET    DC.L    ARROWUP        ;NEXTGADGET
  2908.         DC.W    25        ;LEFTEDGE
  2909.         DC.W    150-6+2        ;TOPEDGE
  2910.         DC.W    65        ;WIDTH
  2911.         DC.W    13        ;HEIGHT
  2912.         DC.W    GADGHIMAGE!GADGIMAGE    ;TYPE
  2913.         DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  2914.         DC.W    BOOLGADGET    ;GADGETTYPE
  2915.         DC.L    PTCHMASKI    ;GADGETRENDER
  2916.         DC.L    PTCHMASKA    ;SELECTRENDER
  2917.         DC.L    0        ;GADGETTEXT
  2918.         DC.L    0        ;MUTUALEXCLUDE
  2919.         DC.L    0        ;SPECIALINFO
  2920.         DC.W    0        ;NUMMER DES GADGETS
  2921.         DC.L    0        ;USERDATA
  2922.  
  2923. PTCHMASKI    DC.W    0        ;LEFTEDGE RELATIV
  2924.         DC.W    0        ;TOPEDGE RELATIV
  2925.         DC.W    65        ;WIDTH
  2926.         DC.W    13        ;HEIGTH
  2927.         DC.W    2        ;DEPTH
  2928.         DC.L    PTCHIIM        ;IMAGEDATA
  2929.         DC.B    %11        ;PLANEPICK
  2930.         DC.B    0        ;PLANEONOFF
  2931.         DC.L    0        ;NEXTIMAGE
  2932.  
  2933. PTCHMASKA    DC.W    0        ;LEFTEDGE RELATIV
  2934.         DC.W    0        ;TOPEDGE RELATIV
  2935.         DC.W    65        ;WIDTH
  2936.         DC.W    13        ;HEIGTH
  2937.         DC.W    2        ;DEPTH
  2938.         DC.L    PTCHAIM        ;IMAGEDATA
  2939.         DC.B    %11        ;PLANEPICK
  2940.         DC.B    0        ;PLANEONOFF
  2941.         DC.L    0        ;NEXTIMAGE
  2942.  
  2943. ARROWUP        DC.L    ARROWDOWN    ;NEXTGADGET
  2944.         DC.W    405+26        ;LEFTEDGE
  2945.         DC.W    8        ;TOPEDGE
  2946.         DC.W    19        ;WIDTH
  2947.         DC.W    11        ;HEIGHT
  2948. AUFLAGS        DC.W    GADGHIMAGE!GADGIMAGE!GADGDISABLED    ;TYPE
  2949.         DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  2950.         DC.W    BOOLGADGET    ;GADGETTYPE
  2951.         DC.L    ARROWUPMASKI    ;GADGETRENDER
  2952.         DC.L    ARROWUPMASKA    ;SELECTRENDER
  2953.         DC.L    0        ;GADGETTEXT
  2954.         DC.L    0        ;MUTUALEXCLUDE
  2955.         DC.L    0        ;SPECIALINFO
  2956.         DC.W    0        ;NUMMER DES GADGETS
  2957.         DC.L    0        ;USERDATA
  2958.  
  2959. ARROWUPMASKI    DC.W    0        ;LEFTEDGE RELATIV
  2960.         DC.W    0        ;TOPEDGE RELATIV
  2961.         DC.W    19        ;WIDTH
  2962.         DC.W    11        ;HEIGTH
  2963.         DC.W    2        ;DEPTH
  2964.         DC.L    AUPIIM        ;IMAGEDATA
  2965.         DC.B    %11        ;PLANEPICK
  2966.         DC.B    0        ;PLANEONOFF
  2967.         DC.L    0        ;NEXTIMAGE
  2968.  
  2969. ARROWUPMASKA    DC.W    0        ;LEFTEDGE RELATIV
  2970.         DC.W    0        ;TOPEDGE RELATIV
  2971.         DC.W    19        ;WIDTH
  2972.         DC.W    11        ;HEIGTH
  2973.         DC.W    2        ;DEPTH
  2974.         DC.L    AUPAIM        ;IMAGEDATA
  2975.         DC.B    %11        ;PLANEPICK
  2976.         DC.B    0        ;PLANEONOFF
  2977.         DC.L    0        ;NEXTIMAGE
  2978.  
  2979. ARROWDOWN    DC.L    PROPGADGET1    ;NEXTGADGET
  2980.         DC.W    405+26        ;LEFTEDGE
  2981.         DC.W    51        ;TOPEDGE
  2982.         DC.W    19        ;WIDTH
  2983.         DC.W    11        ;HEIGHT
  2984. ADFLAGS        DC.W    GADGHIMAGE!GADGIMAGE!GADGDISABLED    ;TYPE
  2985.         DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  2986.         DC.W    BOOLGADGET    ;GADGETTYPE
  2987.         DC.L    ARROWDOWNMASKI    ;GADGETRENDER
  2988.         DC.L    ARROWDOWNMASKA    ;SELECTRENDER
  2989.         DC.L    0        ;GADGETTEXT
  2990.         DC.L    0        ;MUTUALEXCLUDE
  2991.         DC.L    0        ;SPECIALINFO
  2992.         DC.W    0        ;NUMMER DES GADGETS
  2993.         DC.L    0        ;USERDATA
  2994.  
  2995. ARROWDOWNMASKI    DC.W    0        ;LEFTEDGE RELATIV
  2996.         DC.W    0        ;TOPEDGE RELATIV
  2997.         DC.W    19        ;WIDTH
  2998.         DC.W    11        ;HEIGTH
  2999.         DC.W    2        ;DEPTH
  3000.         DC.L    ADOWNIIM    ;IMAGEDATA
  3001.         DC.B    %11        ;PLANEPICK
  3002.         DC.B    0        ;PLANEONOFF
  3003.         DC.L    0        ;NEXTIMAGE
  3004.  
  3005. ARROWDOWNMASKA    DC.W    0        ;LEFTEDGE RELATIV
  3006.         DC.W    0        ;TOPEDGE RELATIV
  3007.         DC.W    19        ;WIDTH
  3008.         DC.W    11        ;HEIGTH
  3009.         DC.W    2        ;DEPTH
  3010.         DC.L    ADOWNAIM    ;IMAGEDATA
  3011.         DC.B    %11        ;PLANEPICK
  3012.         DC.B    0        ;PLANEONOFF
  3013.         DC.L    0        ;NEXTIMAGE
  3014.  
  3015. PROPGADGET1    DC.L    GADGET1        ;NEXTGADGET
  3016.         DC.W    405+26        ;LEFTEDGE
  3017.         DC.W    19        ;TOPEDGE
  3018.         DC.W    19        ;WIDTH
  3019.         DC.W    61-29        ;HEIGHT
  3020. P1FLAGS        DC.W    GADGHCOMP!GADGIMAGE!GADGDISABLED    ;TYPE
  3021.         DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3022.         DC.W    PROPGADGET    ;GADGETTYPE
  3023.         DC.L    PROP1SEL    ;GADGETRENDER
  3024.         DC.L    0    ;SELECTRENDER
  3025.         DC.L    0        ;GADGETTEXT
  3026.         DC.L    0        ;MUTUALEXCLUDE
  3027.         DC.L    PROPINFO1    ;SPECIALINFO
  3028.         DC.W    0        ;NUMMER DES GADGETS
  3029.         DC.L    0        ;USERDATA
  3030.  
  3031. PROP1SEL    DC.W    0
  3032.     DC.W    0
  3033.     DC.W    11    ;WIDTH
  3034.     DC.W    10    ;HEIGHT
  3035.     DC.W    0
  3036.     DC.L    0
  3037.     DC.B    0
  3038.     DC.B    0
  3039.     DC.L    0
  3040.  
  3041. PROPINFO1    DC.W    AUTOKNOB!FREEVERT    ;FLAGS
  3042.     DC.W    0        ;HORIZPOT
  3043.     DC.W    0        ;VERTPOT
  3044.     DC.W    $3333        ;HORIZBODY
  3045.     DC.W    $2000        ;VERTBODY
  3046.     DC.W    0        ;CWIDTH
  3047.     DC.W    0        ;CHEIGHT
  3048.     DC.W    0        ;HPOTRES
  3049.     DC.W    0        ;VPOTRES
  3050.     DC.W    0        ;LEFTBORDER
  3051.     DC.W    0        ;TOPBORDER
  3052.  
  3053. GADGET1    DC.L    GADGET2        ;NEXTGADGET
  3054.     DC.W    28        ;LEFTEDGE
  3055.     DC.W    10        ;TOPEDGE
  3056.     DC.W    400        ;WIDTH
  3057.     DC.W    10        ;HEIGHT
  3058. G1FLAGS    DC.W    GADGHCOMP    ;TYPE
  3059.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3060.     DC.W    BOOLGADGET    ;GADGETTYPE
  3061.     DC.L    0        ;GADGETRENDER
  3062.     DC.L    0        ;SELECTRENDER
  3063.     DC.L    GTEXT1        ;GADGETTEXT
  3064.     DC.L    0        ;MUTUALEXCLUDE
  3065.     DC.L    0        ;SPECIALINFO
  3066.     DC.W    0        ;NUMMER DES GADGETS
  3067.     DC.L    0        ;USERDATA
  3068.  
  3069. GTEXT1    DC.B    1    ;FRONTPEN
  3070.     DC.B    0    ;BACKPEN
  3071.     DC.B    JAM2    ;DRAWMODE
  3072.     EVEN
  3073.     DC.W    2    ;LEFTEDGE
  3074.     DC.W    1    ;TOPEDGE
  3075.     DC.L    RUBY_FNT    ;FONT
  3076. T1PTR    DC.L    TEXT1    ;TEXT
  3077.     DC.L    0    ;NÄCHSTER TEXT
  3078.  
  3079. GADGET2    DC.L    GADGET3        ;NEXTGADGET
  3080.     DC.W    28        ;LEFTEDGE
  3081.     DC.W    20        ;TOPEDGE
  3082.     DC.W    400        ;WIDTH
  3083.     DC.W    10        ;HEIGHT
  3084. G2FLAGS    DC.W    GADGHCOMP!GADGDISABLED    ;TYPE
  3085.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3086.     DC.W    BOOLGADGET    ;GADGETTYPE
  3087.     DC.L    0        ;GADGETRENDER
  3088.     DC.L    0        ;SELECTRENDER
  3089.     DC.L    GTEXT2        ;GADGETTEXT
  3090.     DC.L    0        ;MUTUALEXCLUDE
  3091.     DC.L    0        ;SPECIALINFO
  3092.     DC.W    0        ;NUMMER DES GADGETS
  3093.     DC.L    0        ;USERDATA
  3094.  
  3095. GTEXT2    DC.B    1    ;FRONTPEN
  3096.     DC.B    0    ;BACKPEN
  3097.     DC.B    JAM2    ;DRAWMODE
  3098.     EVEN
  3099.     DC.W    2    ;LEFTEDGE
  3100.     DC.W    1    ;TOPEDGE
  3101.     DC.L    RUBY_FNT    ;FONT
  3102. T2PTR    DC.L    TEXT1    ;TEXT
  3103.     DC.L    0    ;NÄCHSTER TEXT
  3104.  
  3105. GADGET3    DC.L    GADGET4        ;NEXTGADGET
  3106.     DC.W    28        ;LEFTEDGE
  3107.     DC.W    30        ;TOPEDGE
  3108.     DC.W    400        ;WIDTH
  3109.     DC.W    10        ;HEIGHT
  3110. G3FLAGS    DC.W    GADGHCOMP!GADGDISABLED    ;TYPE
  3111.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3112.     DC.W    BOOLGADGET    ;GADGETTYPE
  3113.     DC.L    0        ;GADGETRENDER
  3114.     DC.L    0        ;SELECTRENDER
  3115.     DC.L    GTEXT3        ;GADGETTEXT
  3116.     DC.L    0        ;MUTUALEXCLUDE
  3117.     DC.L    0        ;SPECIALINFO
  3118.     DC.W    0        ;NUMMER DES GADGETS
  3119.     DC.L    0        ;USERDATA
  3120.  
  3121. GTEXT3    DC.B    1    ;FRONTPEN
  3122.     DC.B    0    ;BACKPEN
  3123.     DC.B    JAM2    ;DRAWMODE
  3124.     EVEN
  3125.     DC.W    2    ;LEFTEDGE
  3126.     DC.W    1    ;TOPEDGE
  3127.     DC.L    RUBY_FNT    ;FONT
  3128. T3PTR    DC.L    TEXT1    ;TEXT
  3129.     DC.L    0    ;NÄCHSTER TEXT
  3130.  
  3131. GADGET4    DC.L    GADGET5        ;NEXTGADGET
  3132.     DC.W    28        ;LEFTEDGE
  3133.     DC.W    40        ;TOPEDGE
  3134.     DC.W    400        ;WIDTH
  3135.     DC.W    10        ;HEIGHT
  3136. G4FLAGS    DC.W    GADGHCOMP!GADGDISABLED    ;TYPE
  3137.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3138.     DC.W    BOOLGADGET    ;GADGETTYPE
  3139.     DC.L    0        ;GADGETRENDER
  3140.     DC.L    0        ;SELECTRENDER
  3141.     DC.L    GTEXT4        ;GADGETTEXT
  3142.     DC.L    0        ;MUTUALEXCLUDE
  3143.     DC.L    0        ;SPECIALINFO
  3144.     DC.W    0        ;NUMMER DES GADGETS
  3145.     DC.L    0        ;USERDATA
  3146.  
  3147. GTEXT4    DC.B    1    ;FRONTPEN
  3148.     DC.B    0    ;BACKPEN
  3149.     DC.B    JAM2    ;DRAWMODE
  3150.     EVEN
  3151.     DC.W    2    ;LEFTEDGE
  3152.     DC.W    1    ;TOPEDGE
  3153.     DC.L    RUBY_FNT    ;FONT
  3154. T4PTR    DC.L    TEXT1    ;TEXT
  3155.     DC.L    0    ;NÄCHSTER TEXT
  3156.  
  3157. GADGET5    DC.L    0        ;NEXTGADGET
  3158.     DC.W    28        ;LEFTEDGE
  3159.     DC.W    50        ;TOPEDGE
  3160.     DC.W    400        ;WIDTH
  3161.     DC.W    10        ;HEIGHT
  3162. G5FLAGS    DC.W    GADGHCOMP!GADGDISABLED    ;TYPE
  3163.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3164.     DC.W    BOOLGADGET    ;GADGETTYPE
  3165.     DC.L    0        ;GADGETRENDER
  3166.     DC.L    0        ;SELECTRENDER
  3167.     DC.L    GTEXT5        ;GADGETTEXT
  3168.     DC.L    0        ;MUTUALEXCLUDE
  3169.     DC.L    0        ;SPECIALINFO
  3170.     DC.W    0        ;NUMMER DES GADGETS
  3171.     DC.L    0        ;USERDATA
  3172.  
  3173. GTEXT5    DC.B    1    ;FRONTPEN
  3174.     DC.B    0    ;BACKPEN
  3175.     DC.B    JAM2    ;DRAWMODE
  3176.     EVEN
  3177.     DC.W    2    ;LEFTEDGE
  3178.     DC.W    1    ;TOPEDGE
  3179.     DC.L    RUBY_FNT    ;FONT
  3180. T5PTR    DC.L    TEXT1    ;TEXT
  3181.     DC.L    0    ;NÄCHSTER TEXT
  3182.  
  3183.  
  3184. TEXT1    DC.B    0
  3185.     EVEN
  3186.  
  3187. SRCINFO    DC.B    'Source drive is '
  3188. SRCDEVICE    DC.B    'DF0:',0
  3189.     DS.B    120
  3190.     EVEN
  3191.     DC.B    0
  3192. DESTINFO    DC.B    'Destination drive is '
  3193. DESTDEVICE    DC.B    'DF0:',0
  3194.     DS.B    120
  3195.     EVEN
  3196. PARAMFILENAM    DC.B    0
  3197.     DS.B    200
  3198.     EVEN
  3199.  
  3200. SOURCEIORQ
  3201.     DC.L    0
  3202. DESTIORQ
  3203.     DC.L    0
  3204. BOOTIORQ
  3205.     DC.L    0
  3206.  
  3207. TEXT3    DC.B    'CANCEL',0
  3208.     EVEN
  3209. TEXT2    DC.B    'OK',0
  3210.     EVEN
  3211. BODYTEXT    DC.B    0    ;FRONTPEN
  3212.     DC.B    1        ;BACKPEN
  3213.     DC.B    1        ;DRAWMODE
  3214.     EVEN
  3215.     DC.W    $E        ;LINKER RAND DES TEXTES
  3216.     DC.W    6        ;OBERER RAND DES TEXTES
  3217.     DC.L    0        ;ZEICHENSATZ STANDARD
  3218. ASKING    DC.L    0        ;DARZUSTELLENDER TEXT
  3219.     DC.L    BODYTEXT2        ;LINK ZU WEITEREN STRUKTUREN
  3220.  
  3221. BODYTEXT2    DC.B    0    ;FRONTPEN
  3222.     DC.B    1        ;BACKPEN
  3223.     DC.B    1        ;DRAWMODE
  3224.     EVEN
  3225.     DC.W    $E        ;LINKER RAND DES TEXTES
  3226.     DC.W    6+9        ;OBERER RAND DES TEXTES
  3227.     DC.L    0        ;ZEICHENSATZ STANDARD
  3228. ASKING2    DC.L    0        ;DARZUSTELLENDER TEXT
  3229.     DC.L    0        ;LINK ZU WEITEREN STRUKTUREN
  3230.  
  3231. RIGHTTEXT    DC.B    0
  3232.     DC.B    1
  3233.     DC.B    1
  3234.     EVEN
  3235.     DC.W    6
  3236.     DC.W    3
  3237.     DC.L    0
  3238.     DC.L    TEXT3
  3239.     DC.L    0
  3240.  
  3241. LEFTTEXT    DC.B    0
  3242.     DC.B    1
  3243.     DC.B    1
  3244.     EVEN
  3245.     DC.W    6
  3246.     DC.W    3
  3247.     DC.L    0
  3248.     DC.L    TEXT2
  3249.     DC.L    0
  3250.  
  3251. ;--------------------------------------------------------------------------
  3252.  
  3253. POINTARRAY1
  3254.     DC.W    25+405,8
  3255.     DC.W    25,8
  3256.     DC.W    25,61
  3257.     DC.W    25+405,61
  3258.     DC.W    25+405,8
  3259.  
  3260. POINTARRAY2
  3261.     DC.W    449,71
  3262.     DC.W    25,71
  3263.     DC.W    25,103
  3264.     DC.W    449,103
  3265.     DC.W    449,71
  3266.  
  3267. POINTARRAY3
  3268.     DC.W    449,113
  3269.     DC.W    25,113
  3270.     DC.W    25,135
  3271.     DC.W    449,135
  3272.     DC.W    449,113
  3273.  
  3274. DISKFNTBASE    DC.L    0
  3275. PARAMCOUNT    DC.W    10
  3276. PARAMTABBASE    DC.L    0
  3277.  
  3278. DOSBAS        DC.L    0        ;\
  3279. FILEMEMADR    DC.L    0        ; \
  3280. INTUIBASE    DC.L    0        ;  \
  3281. GRABASE        DC.L    0        ;   \
  3282. WINDOW1        DC.L    0        ;    \
  3283. STRFILNAME    DC.L    0        ;     \
  3284. FILPTR        DC.L    FILNAME        ;      \
  3285. FILSIZE        DC.L    0        ;       \
  3286. LOCKDISKPTR    DC.L    LOCKDISK    ;        \
  3287. OPENDEVICE    DC.L    OPENDEV        ;         \
  3288. DEVICESOURCEPTR    DC.L    0        ;          \
  3289. DEVICEDESTPTR    DC.L    0        ;          /
  3290. SPACE        DC.L    SPECIALSPACE    ;         /
  3291. FORMATZIEL    DC.L    FORMATDEST    ;        /
  3292. REQUEST        DC.L    ASKREQUEST    ;       /
  3293. FSSMSOURCEPTR    DC.L    0        ;      /
  3294. FSSMDESTPTR    DC.L    0        ;     /
  3295. INHIBITDR    DC.L    INHIBITDRIVE    ;    /
  3296. ENABLEDR    DC.L    ENABLEDRIVE    ;   /
  3297. CRC16        DC.L    CRCEVAL        ;  /
  3298. DISPLAY        DC.L    DISPLAYSTATE    ; /
  3299. RESERVED    DS.B    $40        ;/
  3300.  
  3301. WIN1RASTPORT    DC.L    0
  3302. PARAMLOCK    DC.L    0
  3303. MEMORYBASE    DC.L    0
  3304. FILHANDLE    DC.L    0
  3305. OSSTACK        DC.L    0
  3306. LENGTHBODY    DC.W    0
  3307. POSOFPROP    DC.W    0
  3308. SIGNALSTORE    DC.L    -1
  3309. DOSPACKETS    DC.L    0
  3310. MYPORT    DC.L    0
  3311. FILENAMEGIVEN    DC.B    0
  3312. PORTOK    DC.B    0
  3313. EXEC1PARAM    DC.B    0
  3314.     EVEN
  3315. IntuiName    dc.b    "intuition.library",0
  3316.         EVEN
  3317. graName        Dc.b    "graphics.library",0
  3318.         even
  3319. DISKFNTNAME    DC.B    'diskfont.library',0
  3320.     EVEN
  3321. DOSNAM        DC.B    'dos.library',0
  3322.     EVEN
  3323.  
  3324. ROOTBL    INCBIN    ROOTBL
  3325.  
  3326. BOOTBL
  3327.     DC.B    $44,$4F,$53,$00,$C0,$20,$0F,$19
  3328.     DC.B    $00,$00,$03,$70,$43,$FA,$00,$18
  3329.     DC.B    $4E,$AE,$FF,$A0,$4A,$80,$67,$0A
  3330.     DC.B    $20,$40,$20,$68,$00,$16,$70,$00
  3331.     DC.B    $4E,$75,$70,$FF,$60,$FA,$64,$6F
  3332.     DC.B    $73,$2E,$6C,$69,$62,$72,$61,$72
  3333.     DC.B    $79,$00
  3334. BOOTEND
  3335.  
  3336.     SECTION    PRG2,BSS
  3337. PARAMINFO    DS.B    $104
  3338.  
  3339.     SECTION    PRG3,BSS
  3340. INFODAT    DS.B    $24
  3341.  
  3342.     SECTION    PRG4,BSS_C
  3343. SPECIALSPACE    DS.B    $C000
  3344.  
  3345.     SECTION    PRG5,DATA_C
  3346. PTCHIIM    INCBIN    GFX/PTCHINACTIVE
  3347. PTCHAIM    INCBIN    GFX/PTCHACTIVE
  3348. AUPIIM    INCBIN    GFX/ARROWUPI
  3349. AUPAIM    INCBIN    GFX/ARROWUPA
  3350. ADOWNIIM    INCBIN    GFX/ARROWDOWNI
  3351. ADOWNAIM    INCBIN    GFX/ARROWDOWNA
  3352.